2017-05-26 65 views
0

我想定义一个类的列表并稍后实例化它们。我有这样
基于Object.class创建类

List<Class> classList = new ArrayList<>(); 
classList.add(ClassA.class); 
classList.add(ClassB.class); 

我想从这个列表读取并创建类的列表。我不知道我必须创建女巫班,因为我的图书馆的客户会定义这个列表。我所知道的是所有这些类都从同一个类继承而来,并且有一个对象作为构造函数参数。
任何想法我应该如何实现这一目标?

+0

使用'List <?扩展YourSuperClass>' – syntagma

+0

你想创建新的_instances_,对吗?列表中的每个元素有一个实例? –

+1

@ΔλЛ需要客户创建课程!由于性能问题,我不希望客户端初始化任何东西,我只是希望他们定义它们,以便稍后可以决定何时创建对象。 – Reza

回答

2

如果有问题所有的类的构造函数接受单个参数,该参数的类型是相同的(让我们说这是String),那么你可以用下面这样一类:

Object instance = clazz.getConstructor(String.class).newInstance("string value you pass to the constructor"); 

此外,如果您的所有课程延伸至课程Super,最好编写Class<? extends Super>而不是原始Class。然后你可以写

Super instance = clazz.getConstructor(String.class).newInstance("string value you pass to the constructor");