【发布时间】:2014-03-19 01:00:05
【问题描述】:
有一种方法可以避免从一个类中创建一个实例的缓慢反射,显然是在另一个方法中?例如:
Foo foo = new Foo();
foo.create(Dog.class, "rocky");
class Foo {
Object create(Class object, String dogName) {
//create an instance of the class 'object' here passing the argument to constructor
//e.g. Object obj = new object(dogName); <-- this is wrong
return obj;
}
}
class Dog extends Animal {
Dog(String dogName) {
this.name = dogName;
}
}
class Animal {
String name;
}
我无法使用关键字“new”创建实例,因为我必须以动态方式在另一个方法中创建实例...
您可以全权委托以最佳方式(如性能)改进此代码:) 谢谢!
【问题讨论】:
-
嗯,显而易见的选择是使用
switch语句从可能的new SomeClass()调用中进行选择。接下来是使用 ClassLoader.loadClass 来获取 Class 指针,然后是 Class.newInstance()。之后是反射选项。 -
“开关”没有,因为结果它也应该是动态的(对于最终用户)。我正在寻找其他解决方案,如 hot licks 建议,谢谢大家
标签: java class object instance processing