如何使用对象字符串来实例化对象

时间:2013-06-04 20:40:27

标签: java oop

在JAVA中,我说有一个字符串变量:

String x = "CoolClass";

我有一个名为CoolClass的类,带有一个工作构造函数。如何使用变量x创建CoolClass对象,而不是自己键入CoolClass。

(我需要这样做,因为x将由用户提供并由Scanner读入,并且根据他们的输入,将相应地构造不同的对象/类。)

4 个答案:

答案 0 :(得分:9)

Class.forName(x).newInstance()
虽然反思可能很棘手且危险,但它会起作用。你能告诉我们你真正想做什么吗?

答案 1 :(得分:6)

此任务需要反思 - Class.forName(x).newInstance()
您可能想要使用不同的设计方法。为什么用户键入所需的类?

答案 2 :(得分:3)

Scanner kbReader = new Scanner(System.In)
String animalType = kbReader.nextLine();

Animal animal; //assume that Lion, Tiger, and Bear inherit Animal

if(animalType.equals("Lion")
{
   animal = new Lion();
}

else if(animalType.equals("Tiger")
{
   animal = new Tiger();
}

else if(animalType.equals("Bear")
{
   animal = new Bear();
}

这不使用任何形式的反射。

答案 3 :(得分:1)

如果您的类具有默认构造函数,则应使用Class.forName(x).newInstance()。如果构造函数需要接收参数,请使用Class.forName(x).getConstructor(YOUR PARAMETER TYPES).newInstance(YOUR ARGUMENTS)