场景:类中的一个方法需要addList
一个对象。方法发送一个包含多种类型对象的参数,而不仅仅是.List
Integer
main
ArrayList
Integer
结果:方法调用addList
成功,也可以检索存储在 中的对象ArrayList
并打印它们。
问题:我们不应该期望在运行时在被调用的方法中接收到列表时,它的内容将被验证并导致一些异常吗?
但是,在addList
方法中,如果我试图在 中插入一个非Integer
对象ArrayList
,它只会在编译时失败。
这是否得出结论钻石运算符约束仅在将对象插入集合中时?
请注意,泛型擦除是不同的问题,不提供此问题的答案。
package com.rnd.nirav;
import java.util.ArrayList;
import java.util.List;
public class OverRidingTest {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add(Integer.valueOf(1));
list.add("Nirav");
list.add(Float.valueOf(1.1f));
addList(list);
}
public static void addList(List<Integer> list) {
list.add("Khandhedia"); // This fails as expected.
System.out.println("List size = " + list.size());
Iterator itr = list.iterator();
while(itr.hasNext())
{
System.out.println("Element is " + itr.next());
}
}
}