0

可能重复:
使用字符串代替变量名

Java中是否有任何方法允许使用字符串创建对象?

假设我有一个名为“Toyata”的类,无论如何我可以使用 Car 类中的字符串变量 s 创建一个 Toyata 的对象吗?

public class Car{
String s = "Toyota";
}

public class Toyota{
int speed;

public Toyota(int speed){
this.speed=speed;
}

}
4

2 回答 2

0

您需要通过s. 然后你必须通过你的类的getConstructor()方法查找正确的构造函数。由于Toyota不包含默认构造函数,因此您需要查询与预期参数匹配的构造函数。在这种情况下,它是一个int. intClass形式表示Integer.TYPE。最后,一切都说完了,你可以newInstance()用传入的所需速度调用构造函数,你应该有一个可以使用的新实例。当然会有一些检查异常需要处理。

Class<?> clazz = Class.forName(s);
Constructor constructor = clazz.getConstructor(new Class[] {Integer.TYPE});
Toyota toyota = (Toyota) constructor.newInstance(new Object[] {90});
于 2012-10-08T23:42:43.430 回答
0

可以使用反射,但您需要一个完全限定的类名:

https://stackoverflow.com/a/4030634/1217408

编辑:

Hovercraft Full Of Eels 关于使用map查找的评论在这种情况下可能更合适。

于 2012-10-08T23:20:14.360 回答