我有一个抽象类'A'和类'B'和'C'扩展A. 我想基于某些变量在运行时创建这些实例。类似下面:Java反射
public abstract class A {
public abstract int count();
}
public class B extends A {
public int count() {
//print 10;
}
}
public class C extends A {
public int count() {
//print 20;
}
}
我会用下面的代码来调用方法计数:
String token;
int i = 10;
if (i == 10) //edit
token = "B";
else
token = "C";
A a;
try {
a = (A) (Class.forName("org.source."+token)).newInstance();
} catch (Exception e) {
//print e
}
a.count();
由于我是新来的Java反射,这里是我的2个问题:
正是我在右上方做的(编辑:如果是默认的构造函数)? (我假设是)
上述工作如果调用默认构造函数(不带参数)。我将如何处理一个我有构造函数来接受争论的情况。我不是很确定我可以如何使用Constructor.newInstance()可以用于上述情况。
任何帮助表示赞赏,
if(1),将无法在Java中工作。此外,类中的“newInstance”仅适用于0-arg构造函数。所以这种方法无法调用需要参数的构造函数。 – eternaln00b 2012-02-09 04:26:22
你能解释一下你想达到的目标吗?反思往往不是这份工作的正确工具。 – Vadim 2012-02-09 04:32:59