如何向用户询问类的名称并根据用户类的名称创建对象?我知道以下代码有错误,但我希望它给出了我想做的想法。
String input = JOptionPane.showInputDialog(null, "Enter the name of object?”);
Stock input = new Stock(“GOO”, 538);
答案 0 :(得分:0)
如果从用户那里获得该类的名称,则首先需要尝试使用静态方法 Class.forName(String name)加载该类。
如果类加载器可以找到类(意味着它位于运行时类路径中),那么您将获得类对象的实例,并可以调用 newInstance( )方法。
请注意,为此,您必须确保该类具有无参数构造函数,您将无法将参数传递给 newInstance()方法。
获得创建的实例后,可以将其转换为已知接口或使用反射来查找调用设置数据的其他方法。
答案 1 :(得分:0)
这应该这样做。
Class.forName(input).newInstance();
答案 2 :(得分:0)
你应该看看reflection。
无论如何,如果你允许我提出这样的问题,你为什么要这样做呢?我的意思是反射很少需要,但更多的是一个糟糕的编程模式,只应在精确的情况下使用(例如使用注释自动填充实例)。
让我们了解您的问题的更多信息,也许我们可以找到更好的解决方案。
答案 3 :(得分:-1)
你正在做的是创建一个Stock对象并将其命名为输入,据我所知你不能基于字符串创建一个对象。但是,如果您知道要让他们输入的对象,请执行以下操作:
String input = JOptionPane.showInputDialog(null, "Enter the name of object?”);
Switch (input){
case String: String string = new String();
case int: int Int = new int();
等等。如果这不是您想要做的想法,请告诉我。