采用以下泛型示例
import java.util.List; import java.util.ArrayList; public class GenericsTest { private ListmyList; public static void main(String args[]) { new GenericsTest(new ArrayList ()).add(new Dog()); } public GenericsTest(List list) { myList = list; } public void add(Animal a) { myList.add(a); } public interface Animal {} public static class Dog implements Animal {} public static class Cat implements Animal {} }
它工作正常.但是如你所知,你不能用它构建它
new GenericsTest(new ArrayList());
因为,如你所知,add(Animal)可以添加Cat
s.该建议解决这个问题的方法,即使用通配符也不管用,因为,是的,你可以改变每一个List
中List extends Animal>
却有着同样的问题:你可以创建GenericsTest
与List
再添加Dog
秒.
所以我的问题是:有没有一种方便的方法来编写这个类一次,然后将它用于所有可能的Animals
?当然它应该直接解决上述问题.
如果我理解你要做什么,那么你需要将泛型类型放在类级别:
public class GenericsTest{ private List myList; public static void main(String args[]) { new GenericsTest (new ArrayList ()); } public GenericsTest(List list) { myList = list; } public void add(T a) { myList.add(a); } }