java泛型中的T和?

来源:互联网 发布:还珠格格知画图片大全 编辑:程序博客网 时间:2024/05/29 19:58

简单来说,?和T都表示不确定的类型,List<T> 和Map<K,V> 等使用到了泛型,也就是它不指明具体是哪一种类型,而是在使用时在传入。并且可以在代码中使用到T.

代码如下:

public static void printColl(ArrayList<?> al){                Iterator<?> it = al.iterator();                while(it.hasNext())                {                      T t = it.next();                      System.out.println(t);      System.out.println(it.next().toString());                                     }

而?是类型通配符,可以指普通的Object或者其子类。使用示例:

public static void printCollecton(Collection <?> collection){for(Object obj: collection){System.out.println(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泛型中<?>和<T>有什么区别?

0 0