1

我怎么能做这样的事情?

String N = jTextField0.getText();
MyClass (N) = new Myclass();

它甚至可能吗?或者正如我的问题所解释的那样,我如何才能创建一个方法来创建我指定类的新对象,每次调用它时都使用不同的名称。我真的到处寻找,没有运气。提前致谢

PS我希望你们能原谅我不够清楚,就这样说吧,我制作了一个文本字段来获取想要创建帐户的人的姓名,并且我制作了一个名为“客户”的类。和一个名为“添加”的按钮。现在我希望每次单击“添加”时,编译器都会获取我的文本字段中的内容,并使用从文本字段中获取的内容命名“客户”类的对象

在评论中阅读它太难了,所以我再次更新了我的问题,很抱歉。我被困得太厉害了。我想我的问题是我没有“理解”你做了什么,只是试图复制它。这是我写的:

private void AddB0MouseClicked(java.awt.event.MouseEvent evt) {
    String name = NameT0.getText();
    Customer instance = new Customer(Name);
    Customer.customers.add(instance);

这是我的客户课程:

public class Customer{
String name;
public Customer(String name){
this.name = name;
}
public String getName(){
    return name;
    }
static ArrayList<Customer> customers = new ArrayList<Customer>();
4

2 回答 2

2

变量名必须在编译时确定,它们甚至不是生成代码的一部分。所以没有办法做到这一点。

如果您希望能够为您的对象命名,您可以使用

Map<String, MyClass> map = new HashMap<>();

像这样向地图添加对象(例如):

map.put(userInput, new MyClass());

并像这样检索对象:

MyClass mc = map.get(userInput);
于 2012-11-24T22:29:11.277 回答
1

我不完全确定你的意思...

我如何才能创建一个方法来创建指定类的新对象,每次调用它时都使用不同的名称

...但是如果我对您的解释正确,我相信您正在尝试做的事情是 makeMyClass接受构造函数参数。你可以做:

public class MyClass {
    private String name;

    public MyClass(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

然后要创建 的新实例MyClass,请执行以下操作:

String name = jTextField0.getText();
MyClass instance = new MyClass(name);
instance.getName(); // returns the name it was given

编辑

自从我第一次回答这个问题以来,您在评论中添加了说明,我想我会更新答案以描绘更多您正在寻找的功能。

要跟踪MyClass实例,您可以将它们添加到ArrayList. ArrayList对象可以按如下方式实例化:

ArrayList<MyClass> customers = new ArrayList<MyClass>();

MyClass然后对于您要添加的每个实例,执行以下操作:

customers.add(instance);

请注意,ArrayList不应为您希望添加的每个实例重新实例化;你应该只实例化ArrayList一次。

于 2012-11-24T22:28:21.683 回答