• Java 基础


    笔记:

    /**1.定义一个PairTest泛型类, 测试泛型 类 Pair的用法
     * class Pair<T>{
     *     private T first;
     *     private T second;
     *     ............(方法get/set 全部自动生成)
     *     }
     * 2.泛型方法的使用; 创建一个泛型方法: 格式: [public...访问修订符] [static][final]  <T> void classname(T x){ ... }
     * 3.类型通配符为'?',仅可以用来声明变量!不可以声明类!  void showClassName(Status<?>ob)  ;默认上界是 Number
     */

    测试代码:

    public class Test泛型 {
        public static void main(String[] args){
                //1.定义一个PairTest类, 测试泛型类Pair的用法
            Pair<String> pair=new Pair<String>("Hello","Java");
            System.out.print("first = "+pair.getFirst());
            System.out.println(", second = "+pair.getSecond());
            System.out.println("-----------------------------");
                //2.泛型方法的使用; 创建一个泛型方法;
            GenericMethod gm = new GenericMethod();
            gm.showClassName("c");
            gm.showClassName(1);
            gm.showClassName('a');
            gm.showClassName(gm);
                //3.通配类型参数;
            Integer inums[]={1,2,3,4,5};
            Status<Integer> iobj=new Status<>(inums);
    
            Double dnums[]={1.1,2.2,3.3,4.4,5.5};
            Status<Double> dobj=new Status<>(dnums);
            iobj.showClassName(iobj);
            iobj.showClassName(dobj);  //将void showClassName(Status<T>ob) 改为:void showClassName(Status<?>ob)
        }
    }
    class Pair<T>{
        private T first;
        private T second;
        public Pair() {
            this.first = null;
            this.second = null;
        }
        public Pair(T first, T second) {
            this.first = first;
            this.second = second;
        }
    
        public T getFirst() {
            return first;
        }
        public void setFirst(T first) {
            this.first = first;
        }
        public T getSecond() {
            return second;
        }
        public void setSecond(T second) {
            this.second = second;
        }
    }
    class GenericMethod{
        public <T> void showClassName(T x){
            System.out.println(x+"'s classname: "+x.getClass().getName());
        }
    }
    class Status<T extends Number>{
        T[] nums;
        public Status(T[] nums) {
            this.nums = nums;
        }
        void showClassName(Status<?>ob){
            System.out.println("[3] classname: "+ob.getClass().getName());
        }
    }

    测试结果:

    first = Hello, second = Java
    -----------------------------
    c's classname: java.lang.String
    1's classname: java.lang.Integer
    a's classname: java.lang.Character
    任务168.GenericMethod@3567135c's classname: 任务168.GenericMethod
    [3] classname: 任务168.Status
    [3] classname: 任务168.Status
  • 相关阅读:
    如何让dapper支持oracle游标呢?
    使用Polly让程序有Retry的机制
    js代码优化
    学习simple.data之基础篇
    如何在.net4.0中使用.net4.5的async/await
    异步导出excel
    让人蛋疼的“Oracle.DataAccess.dll”
    关于函数和方法总结
    linux和windows的区别
    01-linux软件包管理器安装和编译安装
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9794048.html
Copyright © 2020-2023  润新知