java泛型中?和T有什么区别?
java arraylist用法
public static void printColl(ArrayList<?> al){
Iterator<?> it = al.iterator();
while(it.hasNext())
{
System.out.().toString());
}
和T都表⽰不确定的类型但如果是T的话函数⾥⾯可以对T进⾏操作⽐如while⾥⾯可以这样写
T t = it.next();
System.out.println(t);
T⾃定义泛型和?通配符泛型
1.在整个类中只有⼀处使⽤了泛型,使⽤时注意加了泛型了参数不能调⽤与参数类型有关的⽅法⽐如“+”,⽐如打印出任意参数化类型集合中的所有内容,就适合⽤通配符泛型<?> 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的⽗类型。
以上就介绍了java泛型中和有什么区别?,包括了⽅⾯的内容,希望对其他编程教程有兴趣的朋友有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。