代码改变世界

泛型

2017-12-07 21:45  木偶米  阅读(157)  评论(0编辑  收藏  举报

泛型:

泛型中的同配符:?

? super Integer : 只能存储Integer或者是Integer父类元素。  泛型 的下限
 ? extends Number : 只能存储Number或者是Number类型的子类数据。 泛型上限
    

基本泛型:

    ArrayList<String>  list = new ArrayList<String>();  //<String> 表示该容器只能存储字符串类型 的数据。

 

类上的泛型不能作用于方法上的,所有方法要定义一个;但是接口的泛型作用于方法;

泛型接口的定义格式:

interface 接口名<声明自定义泛型>{   }

 

泛型接口要注意的事项:

 

1:接口上自定义的泛型的具体数据类型是实现一个接口的时候指定的

 

2.在接口上自定义的泛型如果在实现接口的时候没有指定具体的数据类型,那么默认为OBJ的类型

 

 

泛型类的定义格式:

public class dfd<声明自定义泛型>{}

泛型类要注意的事项:
    1. 泛型类上的自定义泛型是在使用该类创建对象的时候指定具体的数据类型的。
    2. 如果一个类已经自定义了泛型,使用该类创建对象的时候如果没有指定泛型的具体数据类型,那么默认为Object类型。
    3. 静态的函数不能使用类上自定义的泛型,如果静态函数需要使用,必须要在函数上自定义泛型。
   

泛型方法的定义格式:public static <T>void print(T[] t){
  }泛型方法要注意的事项:
    1. 泛型方法中 的自定义泛型的具体数据类型是在调用该函数的时候传入实参时确定的。
    2. 自定义泛型所用 的标识符只要符合标识符 的命名规则即可。但是我们一般都习惯使用一个大写字母表示。
   

 如果要延长接口自定义泛型 的具体数据类型,那么格式如下:
    格式:  
        public class Demo4<T> implements Dao<T>{
        
        }