这是一个简单的问题(我认为)
假设我有这个代码(假设我有一个狗类)
String name = "dog";
dog name = new dog();
如何让java将name识别为String并命名对象dog?
答案 0 :(得分:41)
虽然您可以使用某些脚本语言(例如PHP)来执行您尝试的操作(许多启动Java的PHP程序员经常会问这个问题),但这不是Java的工作原理,实际上变量名称是在编译代码之后,比你可能意识到的重要得多,甚至几乎不存在。更重要的是什么是关键变量引用 - 能够在程序的特定点获取对特定对象的访问权限,并且您可以通过使用字符串轻松引用对象以一种方式映射。
例如
Map<String, Dog> dogMap = new HashMap<String, Dog>();
dogMap.put("Fido", new Dog("Fido"));
Dog myPet = dogMap.get("Fido");
或者您可以通过许多其他方式获取对象的引用,例如via数组,ArrayLists,LinkedLists或其他几个collectinos。
修改强>
你说:
问题是在我的代码中我将使用一个方法来创建对象,对象的名称是任意的但我需要它是动态的,因为它不是临时的,所以对象的实际名称有改变或者我将写下先前声明的对象。
当我说变量的名称并不像你想象的那么重要时,这正是我的意思。变量名是 不 &#34;对象名称&#34; (这实际上并不存在)。
例如,如果您在名为Fido的变量中创建一个狗,然后将其分配给名为spot的新变量,则这两个变量尽管具有不同的名称,但它们将引用同一个对象:
Dog fido = new Dog;
Dog spot = fido; // now fido and spot refer to the same object
如果你想给一个变量a&#34; name&#34;考虑给该类一个名称属性:
class Dog {
private String name;
public Dog(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
现在,如果愿意,您可以为每个Dog对象提供自己的(半)唯一名称。
答案 1 :(得分:5)
我不认为你在考虑Enums?
private static void test () {
Animal animal = Animal.valueOf("Dog");
}
enum Animal {
Dog,
Cat,
Cow,
Pig,
Rat,
Ant,
Gnu;
}