360SDN.COM

首页/Java/列表

java泛型中<?>和<T>有什么区别?

来源:  2017-09-04 10:33:11    评论:0点击:

public static void printColl(ArrayListal){
                Iteratorit = al.iterator();
                while(it.hasNext())
                {
                        System.out.println(it.next().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. 当一个类型变脸用来表达两个参数之间或者参数与返回值之间的关系时,即统一各类型变量在方法签名的两处被使用,或者类型变量在方法体代码中也被使用而不仅 仅在签名的时候使用,这是应该用自定义泛型。泛型方可以调用一些时间类型的方法。比如集合的add方法。
public static T autoConvertType(T obj)
{
     return(T)obj;
}

泛型三种:
          [1]ArrayList al=new ArrayList();指定集合元素只能是T类型
          [2]ArrayListal=new ArrayList();集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法
          [3]ArrayListal=new ArrayList();
            泛型的限定:
               ? extends E:接收E类型或者E的子类型。
               ?super E:接收E类型或者E的父类型。


Java中使用泛型“T”,代表一个变量的类型,“?”不能作为一个变量类型使用
为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权