我有幾個從公共基類派生的類。創建具有公共基類的Java元類的列表
public class BaseClass ...
public class ClassA extends BaseClass ...
public class ClassB extends BaseClass ...
我需要這些類存儲列表,我可以通過它們的索引進行檢索,並在運行時創建特定的情況下,我可以做到這一點與下面的工作代碼:
List<Class> a = new ArrayList<Class>();
a.add(ClassA.class);
a.add(ClassB.class);
Class c = a.get(0);
BaseClass m = (BaseClass) c.getConstructor().newInstance();
我想知道是否有任何方法可以說明該列表中的任何班級必須是BaseClass
的後裔。我想確保只有BaseClass
的後代可以添加到列表中。像以下:
List<Class<BaseClass>> a = new ArrayList<Class<BaseClass>>();
a.add(ClassA.class);
a.add(ClassB.class);
但是上述代碼拋出編譯器錯誤:只將完全BaseClass.class可以被用作集合的元素
Error:(135, 10) error: no suitable method found for add(Class<ClassA>)
method List.add(Class<BaseClass>) is not applicable
(actual argument Class<ClassA> cannot be converted to Class<BaseClass> by method invocation conversion)
method List.add(int,Class<BaseClass>) is not applicable
(actual and formal argument lists differ in length)
method Collection.add(Class<BaseClass>) is not applicable
(actual argument Class<ClassA> cannot be converted to Class<BaseClass> by method invocation conversion)
我不確定我是否得到你;你只是指這個'List>'? –
@ᴳᵁᴵᴰᴼ是的,這是答案,如果你將它添加爲答案我會接受它。 –