Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列表之间的差异<;?超级T>;和列表<;类别<;?超级T>;_Java - Fatal编程技术网

Java 列表之间的差异<;?超级T>;和列表<;类别<;?超级T>;

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类型的

我曾经在Java中学习泛型,但我很难理解我将在何处使用以下两种方法

我知道第一个
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