Java中是否有任何方法允许使用字符串创建对象?
让我们说,我有一个名为“Toyata”的课程,无论如何我可以创建一个Toyata的对象 在Car类中使用字符串变量s?
public class Car{
String s = "Toyota";
}
public class Toyota{
int speed;
public Toyota(int speed){
this.speed=speed;
}
}
答案 0 :(得分:0)
你可以使用反射,但你需要一个完全限定的类名:
https://stackoverflow.com/a/4030634/1217408
编辑:
Hovercraft Full Of Eels关于使用map
查找的评论在这种情况下可能更合适。
答案 1 :(得分:0)
您需要通过s
的值查询类(假设它在默认包中,这应该有效)。然后,您必须通过类“getConstructor()
方法查找正确的构造函数。由于Toyota
不包含默认构造函数,因此您需要查询与预期参数匹配的构造函数。在这种情况下,它是int
。 int
以Class
形式表示Integer.TYPE
。最后,在完成所有操作之后,您可以在构造函数上调用newInstance()
并传入所需的速度,并且您应该准备好使用新实例。当然会有一些经过检查的例外处理。
Class<?> clazz = Class.forName(s);
Constructor constructor = clazz.getConstructor(new Class[] {Integer.TYPE});
Toyota toyota = (Toyota) constructor.newInstance(new Object[] {90});