在字符串后命名一个新对象?
我希望有一个方法可以创建类的对象,并自动将其命名为第一个对象的"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());