如何将String解析为对象

时间:2013-12-01 13:51:37

标签: java string parsing object

首先,我已经搜索了一下,但无法找到我的问题的答案。如果这样的线程存在,我很抱歉。另外,我只是处于初学者的水平,所以也许我只是不明白在解释什么,也许我没有使用正确的术语。

我想将String解析为对象类型。例如:

Boat boat1 = new Motorboat();
String type = JOptionPane.showInputDialog(null, "Enter a type");
if(boat1 instanceof type)
{
    System.out.println("boat1 is a motorboat");
}

Boat是一个抽象类,而Motorboat是它的子类之一。

我知道这不会起作用,因为type是一个String,但我怎样才能使这个工作?如何将此String解析为对象类型?

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用Class.forName

从字符串中查找Class对象
String typeName = JOptionPane.showMessageDialog(null, "Enter a type");
Class<?> class = Class.forName(typeName);
if (class != null && class.isInstance(boat1))
{
    System.out.println("boat1 is a motorboat");
}

请特别注意,因为您的比较需要完全限定的类名(包括所有包)。

答案 1 :(得分:1)

尝试使用对象的类:

if (boat1.getClass().getSimpleName().equals(type)) {
    System.out.println("boat1 is a motorboat");
}