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