使用string值创buildvariables名称
这是一个简单的问题(我认为)
可以说我有这个代码(假设我有一个狗class)
String name = "dog"; dog name = new dog();
我怎样才能让java识别名称作为一个string,并命名对象的狗?
虽然你可以用一些脚本语言来做你正在尝试的东西,比如PHP(而这个问题经常被很多启动Java的PHP程序员问到),但这不是Java的工作原理,事实上variables名比代码编译后你可能会意识到,甚至不存在。 什么是更重要,什么是关键是variables引用 – 在程序的某个特定位置访问特定对象的能力,并且可以使用Map作为一种方式,使string轻松地引用对象。
例如
Map<String, Dog> dogMap = new HashMap<String, Dog>(); dogMap.put("Fido", new Dog("Fido")); Dog myPet = dogMap.get("Fido");
或者你可以通过许多其他方式获得对象的引用,比如通过数组,ArrayLists,LinkedLists或者其他一些collectinos。
编辑
你说:
问题是在我的代码中,我将使用一种方法来创build对象,对象的名称是任意的,但我需要它是dynamic的,因为它不会是临时的,所以对象的实际名称必须改变或我将写在先前声明的对象上。
当我说variables的名字并不像你想像的那么重要时,这正是我的意思。 variables名称不是 “对象名称”(这实际上并不存在)。
例如,如果您在名为Fido的variables中创build一个狗,然后将其分配给一个名为spot的新variables,则尽pipe名称不同,但这两个variables都会引用同一个对象:
Dog fido = new Dog; Dog spot = fido; // now fido and spot refer to the same object
如果你想给variables一个“名字”考虑给这个类一个名字属性:
class Dog { private String name; public Dog(String name) { this.name = name; } public String getName() { return name; } }
现在你可以给每个狗对象自己的(半)独特的名字,如果你想。
我不认为你在想Enums ?
private static void test () { Animal animal = Animal.valueOf("Dog"); } enum Animal { Dog, Cat, Cow, Pig, Rat, Ant, Gnu; }