Java 列表之间的差异<;?超级T>;和列表<;类别<;?超级T>;
我曾经在Java中学习泛型,但我很难理解我将在何处使用以下两种方法 我知道第一个Java 列表之间的差异<;?超级T>;和列表<;类别<;?超级T>;,java,Java,我曾经在Java中学习泛型,但我很难理解我将在何处使用以下两种方法 我知道第一个myList将确保列表只包含Integer类型的元素及其所有超类。现在我正试图找出myList2在这里的位置 List<? super Integer> myList; List<Class<? super Integer>> myList2; List第一个“myList”可能包含整数值。示例:myList.add(200) 第二个“myList2”可能包含integer类型的
myList
将确保列表只包含Integer
类型的元素及其所有超类。现在我正试图找出myList2
在这里的位置
List<? super Integer> myList;
List<Class<? super Integer>> myList2;
List第一个“myList”可能包含整数值。示例:myList.add(200)代码>
第二个“myList2”可能包含integer类型的类。示例:myList2.add(Integer.class)代码>
更新:
正如在评论中正确指出的,由于应用了“super”关键字,除了Integer类型的对象/类之外,Integer类型的所有超类(即:Number和Object)也可以包含。第一个列表包含Integer及其超类的对象。
第二个包含整数及其超类的类对象(或简单的类),即:
Integer.class;
Number.class;
您可以在这里阅读更多关于差异的信息:myList2.add(Integer.class)代码>myList
的可能重复项是对象实例的列表,例如,存储整数
,双
,大十进制
。。。对象,例如42
,3.14159
,3e9876
,…-myList2
是Class
对象的列表,即Integer.Class
、Number.Class
、Object.Class
、Serializable.Class
或Compariable.Class
值的列表。我理解super和extends之间的区别。我只是想知道myList2将在哪里使用。我不能马上想到类对象列表的用法,但一般来说,您使用类对象作为指示类型的一种方式,或者作为确定该类型属性的一种方式。好的,就像您在注释中提到的,如果不是整数,而是扩展数字,然后,第二个列表可能包含Integer、BigDecimal等元素。第一个列表也可能包含例如字符串
值,因为它可能是列表
——第二个列表还可以存储其他类型的类,例如Number.class
、Object.class
、Serializable.class
和Comparable.class
。