假设我有一组如下的类:

有一个接口Interface1,并且有两个类Class1和Class2,它们都实现Interface1。

interface Interface1 {}

class Class1 implements Interface1{}

class Class2 implements Interface1{}

现在,我想创建一个实现Interface1的类的列表。我正在尝试做类似的事情:

List<Class<Interface1>> classes = new List<Class<Interface1>>();
classes.add(Class1.class);
classes.add(Class2.class);

但这是行不通的。我收到编译器错误:
Class1.class is of type Class<Class1> and so cannot be added to the list

有什么方法可以实现我的目标?

最佳答案

使用受interface类型限制的通配符

List<Class<? extends Interface1>> classes = new ArrayList<Class<? extends Interface1>>();
classes.add(Class1.class);
classes.add(Class2.class);
classes.add(String.class); // won't compile

07-26 05:24