Java正在从用户获取对象引用的名称

Java正在从用户获取对象引用的名称,java,Java,如何向用户请求类的名称并基于用户类的名称创建对象?我知道下面的代码有一个错误,但我希望它给出了一个我想要做的想法 String input = JOptionPane.showInputDialog(null, "Enter the name of object?”); Stock input = new Stock(“GOO”, 538); 你要做的是创建一个库存对象并将其命名为输入,据我所知,你不能基于字符串创建对象。但是,如果您知道要输入哪些对象,可以执行以下操作: String i

如何向用户请求类的名称并基于用户类的名称创建对象?我知道下面的代码有一个错误,但我希望它给出了一个我想要做的想法

String input = JOptionPane.showInputDialog(null, "Enter the name of object?”); 
Stock input = new Stock(“GOO”,  538);

你要做的是创建一个库存对象并将其命名为输入,据我所知,你不能基于字符串创建对象。但是,如果您知道要输入哪些对象,可以执行以下操作:

String input = JOptionPane.showInputDialog(null, "Enter the name of object?”); 
Switch (input){
case String: String string  = new String();
case int: int Int = new int();

等等。如果这不是您想要做的事情,请告诉我。

如果您从用户处获得类的名称,则首先需要尝试使用静态方法class.forNameString name加载该类

如果类加载器可以定位类,这意味着它位于运行时类路径中,那么您将获得类对象的实例,并可以在该实例上调用newInstance方法

请注意,要执行此操作,必须确保该类具有无参数构造函数,否则将无法将参数传递给newInstance方法

创建实例后,可以将其强制转换为已知接口,或使用反射查找其他方法来调用设置数据。

这应该可以做到

Class.forName(input).newInstance();
你应该看一看

无论如何,如果你允许我问这样一个问题,你为什么要这么做?我的意思是反射很少是一种需要,但更多的是一种糟糕的编程模式,应该只在精确的情况下使用,例如使用注释自动填充实例


让我们了解有关您的问题的更多信息,也许我们可以找到更好的解决方案。

因为变量只在内部使用,所以如果它被称为“myStock”或用户指定的东西,又有什么关系呢。也就是说,这个“功能”的用例是什么?@RoddyOfFrozenpeas的可能重复我想他指的是类而不是对象,我编辑了这个问题。@Dijzeus和他的代码示例多少表明,从对话框接受的输入决定了“Stock”变量的名称。嗯,没有注意到,也许我应该先问一下。。。