首先,我已经搜索了一下,但无法找到我的问题的答案。如果这样的线程存在,我很抱歉。另外,我只是处于初学者的水平,所以也许我只是不明白在解释什么,也许我没有使用正确的术语。
我想将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解析为对象类型?
提前致谢。
答案 0 :(得分:3)
您可以使用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");
}
请特别注意,因为您的比较需要完全限定的类名(包括所有包)。
答案 1 :(得分:1)
尝试使用对象的类:
if (boat1.getClass().getSimpleName().equals(type)) {
System.out.println("boat1 is a motorboat");
}