在字符串后命名一个新对象?

我希望有一个方法可以创建类的对象,并自动将其命名为第一个对象的"b1" ,第二个对象的"b2" ,依此类推。 我可以使用String作为新对象的名称吗? 如果有可能,我该怎么办?

 class being { static int count = 0; String name; void createbeing(){ name = "b" + Integer.toString(count); being name = new being(); //Here I want to insert the String name as the name of the object count++; } } 

不,这在Java中是不可能的; 你不能在运行时创建变量。 但是,您可以维护一个Map ,它将String标识符映射到相应的Being sie

 Map map = new HashMap(); ... name = "b" + Integer.toString(count); map.put(name, new Being()); count++; 

请注意,我假设了一个更传统的名称:与Being相反。

在您的代码中,您只是在函数“createbeing()”中创建类对象的本地引用,并且上面声明的String“name”隐藏在“createbeing()”函数作用域中,引用“name”表示您宣称是阶级存在的对象的参考。

我可以使用字符串作为对象的名称吗?

不可以。通常的方法是使用List实现之一并将对象添加到其中,例如:

 class being{ static List beings = new LinkedList(); void createbeing(){ beings.add(new being()); } } 

(我并不是主张使用静态的生物列表。对于你试图解决的更大问题几乎肯定有更好的方法。但那是你提出的代码的最小模式。)

或者,您可以使用Map并实际获取所需的名称( "b1"等):

 class being{ static int count = 0; static Map beings = new HashMap(); void createbeing(){ count++; beings.add("b" + count, new being()); } } 

(与上述相同的警告。)

为您的类添加名称属性(应该命名为Being ,BTW,而不是),以及它的构造函数:

 public class Being private String name; public Being(String name) { this.name = name; } } 

然后创建你的对象:

 void createBeing(){ name = "b" + Integer.toString(count); Being being = new Being(name); // TODO: do something with the Being object count++; } 

这就是一个对象如何拥有一个名字。 不要混淆对象和变量。

这不可能通过这种方式实现。 如果变量的名称对您很重要,则将其存储为Map的键Map

 Map map = new HashMap(); map.put("b1", new being());