我希望有一个方法可以创建类的对象,并为第一个对象自动命名为"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++;
}
}
答案 0 :(得分:9)
不,这在Java中是不可能的;你不能在运行时创建变量。但是,您可以维护一个Map
,将String
个标识符映射到相应的Being
。即。
Map<String, Being> map = new HashMap<String, Being>();
...
name = "b" + Integer.toString(count);
map.put(name, new Being());
count++;
请注意,我假设了一个更传统的名称:Being
而不是being
。
答案 1 :(得分:3)
在您的代码中,您只是在函数“createbeing()”中创建类对象的本地引用,并且上面声明的String“name”通过引用“name”隐藏在“createbeing()”函数范围中“你宣称是作为阶级对象的参考。
答案 2 :(得分:2)
我可以使用字符串作为对象的名称吗?
没有。通常的方法是使用List
实现之一并将对象添加到其中,例如:
class being{
static List<being> beings = new LinkedList<being>();
void createbeing(){
beings.add(new being());
}
}
(我不提倡使用静态的生物列表。对于你试图解决的更大问题几乎肯定有更好的方法。但这是代码的最小模式你提出了。)
或者,您可以使用Map
并实际获取所需的名称("b1"
等):
class being{
static int count = 0;
static Map<String,being> beings = new HashMap<String,being>();
void createbeing(){
count++;
beings.add("b" + count, new being());
}
}
(与上述相同的警告。)
答案 3 :(得分:2)
为您的类添加名称属性(应该命名为Being
,BTW,而不是being
),并为其构造函数添加:
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++;
}
这就是一个对象如何拥有一个名字。不要混淆对象和变量。
答案 4 :(得分:1)
这不可能通过这种方式实现。如果变量名称对您很重要,请将其存储为Map<String,being>
Map<String,being> map = new HashMap<String,being>();
map.put("b1", new being());