Java 如何将字符串解析为对象

Java 如何将字符串解析为对象,java,string,parsing,object,Java,String,Parsing,Object,首先,我已经四处搜索了一下,但找不到我问题的答案。如果这样的线索真的存在,我很抱歉。另外,我还只是一个初学者,所以可能我只是不理解所解释的内容,可能我没有使用正确的术语 我想将字符串解析为对象类型。例如: Boat boat1 = new Motorboat(); String type = JOptionPane.showInputDialog(null, "Enter a type"); if(boat1 instanceof type) { System.out.println("

首先,我已经四处搜索了一下,但找不到我问题的答案。如果这样的线索真的存在,我很抱歉。另外,我还只是一个初学者,所以可能我只是不理解所解释的内容,可能我没有使用正确的术语

我想将字符串解析为对象类型。例如:

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是其子类之一

我知道这不起作用,因为类型是字符串,但我如何才能使它起作用?如何将此字符串解析为对象类型


提前感谢。

尝试使用对象的类:

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

尝试使用对象的类:

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

您可以使用
Class.forName
从字符串中查找类对象:

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");
}
String typeName=JOptionPane.showMessageDialog(null,“输入类型”);
Class=Class.forName(typeName);
if(class!=null&&class.isInstance(boat1))
{
System.out.println(“boat1是一艘摩托艇”);
}

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

您可以使用
Class.forName从字符串中查找类对象:

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");
}
String typeName=JOptionPane.showMessageDialog(null,“输入类型”);
Class=Class.forName(typeName);
if(class!=null&&class.isInstance(boat1))
{
System.out.println(“boat1是一艘摩托艇”);
}

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

的可能重复项请看一看。次要问题:您(我相信)希望将字符串转换为类,而不是类的对象。(一个字符串已经是一个对象。)可能的重复请看。次要问题:您(我相信)想要将字符串转换为类,而不是类的对象。(一个字符串已经是一个对象。)到目前为止,这是有效的,但现在我想将boat1解析为用户给定的类型。我想要的是:摩托艇boat2=(类型)boat1;这仍然不起作用。@user3054461使用到目前为止有效的方法,但现在我想将boat1解析为用户给定的类型。我想要的是:摩托艇boat2=(类型)boat1;这仍然不起作用。@user3054461使用