是否可以将接口或基类类型传递给j​​ava.lang.Class作为泛型类型

时间:2019-05-30 16:25:31

标签: java

我有一个接口A和扩展A的类B,C。

我想将B和C的类类型存储在一个ArrayList中。 为此,我创建了一个列表并添加如下所示的元素;

private List<Class<A>> classes = new ArrayList<>();

classes.add(B.class);
classes.add(C.class);

它不接受添加这些类型。 有什么办法吗?

1 个答案:

答案 0 :(得分:2)

正如本杰明所说,以下内容有效并可以编译。如果对您不起作用,那么您必须忽略一些重要的事情:

public class Main {
    interface A {}
    class B implements A {}
    class C implements A {}
    private List<Class<? extends A>> classes = new ArrayList<>();
    {
        classes.add(B.class);
        classes.add(C.class);
    }
}