Java泛型中的标记符含义:
首先,大家可以看到Point<T>在类名后面加一个尖括号,括号里是一个大写字母。这里写的是T,其实这个字母可以是任何大写字母。
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类) T代表在调用时的指定类型
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的java类型 一般用在通配
首先,大家可以看到Point<T>在类名后面加一个尖括号,括号里是一个大写字母。这里写的是T,其实这个字母可以是任何大写字母。
public static void printColl(ArrayList<?> al){ } ?和T都表示不确定的类型 但如果是T的话 函数里面可以对T进行操作 比如while里面可以这样写 T t = it.next();System.out.println(t); T自定义泛型和?通配符泛型 public static void printCollecton(Collection <?> collection) { for(Object obj: collection) { System.out.println(obj); } } 2. 当一个类型变脸用来表达两个参数之间或者参数与返回值之间的关系时,即统一各类型变量在方法签名的两处被使用,或者类型变量在方法体代码中也被使用而不仅 仅在签名的时候使用,这是应该用自定义泛型<T>。泛型方可以调用一些时间类型的方法。比如集合的add方法。 public static <T> T autoConvertType(T obj) { return(T)obj; } |
泛型三种: [1]ArrayList<T> al=new ArrayList<T>();指定集合元素只能是T类型 [2]ArrayList<?> al=new ArrayList<?>();集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法 [3]ArrayList<? extends E> al=new ArrayList<? extends E>(); 泛型的限定: ? extends E:接收E类型或者E的子类型。 ?super E:接收E类型或者E的父类型。 |