Tag: bounded wildcard

是否可以编写一个接受不同抽象的generics参数的方法?

作为这个问题的后续 ,是否有可能编写一个方法,将Dog添加到合适的房间? (在这个例子中,它可以接受Animal室或Dog室。)或者我是否被迫写下两种不同的方法如下? (因为类型擦除,我甚至不能依赖重载)。 public class Rooms { interface Animal {} class Dog implements Animal {} class Room { void add(T t) {} } void addDogToAnimalRoom(Room room) { room.add(new Dog()); } void addDogToDogRoom(Room room) { room.add(new Dog()); } }

创建无界和有界外卡类型数组之间的区别?

为什么这段代码有效 ArrayList[] arr = new ArrayList[2]; 但以下两个不是? ArrayList[] arr = new ArrayList[2]; ArrayList[] arr = new ArrayList[2]; 最后两行生成编译错误; 错误:通用数组创建。 请澄清差异。 更新 另一方面, ArrayList[] arr = new ArrayList[2]; 编译好但是 ArrayList arr = new ArrayList(); 不。

Java嵌套generics类型

为什么必须使用generics类型Map<?, ? extends List> 对于以下test()方法Map<?, List> Map<?, ? extends List>而不是更简单的Map<?, List> ? public static void main(String[] args) { Map<Integer, List> mappy = new HashMap<Integer, List>(); test(mappy); } public static void test(Map<?, ? extends List> m) {} // Doesn’t compile // public static void test(Map<?, List> m) {} 注意到以下工作,并且三种方法无论如何都具有相同的擦除类型。 public static void test(Map<?, List> m) {}