美文网首页
java泛型中T和?的区别

java泛型中T和?的区别

作者: 小人物不说大话 | 来源:发表于2020-02-19 18:15 被阅读0次

    java泛型中T和?的区别

    T 代表一种类型。

    加在类上:

    classSuperClass<A>{}

    加在方法上:

    public<T>void fromArrayToCollection(T[] a, Collection<T> c){}

    (免费学习视频教程分享:java视频教程

    方法上的<T>代表括号里面要用到泛型参数,若类中传了泛型,此处可以不传,调用类型上面的泛型参数,前提是方法中使用的泛型与类中传来的泛型一致。

    classPeople<T>{

    publicvoid show(T a) {

       }

    }

    T extends T2 指传的参数为T2或者T2的子类型。

    ?是通配符,泛指所有类型。

    一般用于定义一个引用变量,这么做的好处是,如下所示,定义一个sup的引用变量,就可以指向多个对象。

    SuperClass<?> sup = newSuperClass<String>("lisi");

    sup = newSuperClass<People>(newPeople());

    sup = newSuperClass<Animal>(newAnimal());

    若不用?,用固定的类型的话,则:

    SuperClass<String> sup1 = newSuperClass<String>("lisi");

    SuperClass<People> sup2 = newSuperClass<People>("lisi");

    SuperClass<Animal> sup3 = newSuperClass<Animal>("lisi");

    这就是?通配符的好处。

    相关文章教程推荐:java入门教程

    相关文章

      网友评论

          本文标题:java泛型中T和?的区别

          本文链接:https://www.haomeiwen.com/subject/eitzfhtx.html