使用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; }