这是一个简单的问题(我认为)
假设我有这段代码(假设我有一个狗类)
String name = "dog";
dog name = new dog();
如何让java将name识别为字符串并将对象命名为dog?
最佳答案
虽然您可以在某些脚本语言(例如 PHP)中执行您正在尝试的操作(许多开始使用 Java 的 PHP 程序员经常会问这个问题),但这不是 Java 的工作方式,而且事实上变量名非常重要。没有您可能意识到的那么重要,甚至在代码编译后几乎不存在。更重要和关键的是变量引用——在程序中的特定点访问特定对象的能力,并且您可以通过使用映射作为一种方式。
例如
Map<String, Dog> dogMap = new HashMap<String, Dog>();
dogMap.put("Fido", new Dog("Fido"));
Dog myPet = dogMap.get("Fido");
或者您可以通过许多其他方式获取对象的引用,例如通过数组、ArrayList、LinkedList 或其他几种集合。
编辑
您声明:
The thing is that in my code I am going to be using one method to create objects, the name of the object is arbitrary but I need it to be dynamic because it wont be temporary, so the actually name of the object has to change or I will be writing over the previously declared object.
这正是我所说的变量名称并不像你想象的那么重要的意思。变量名称不是“对象名称”(实际上并不存在)。
例如,如果您在名为 Fido 的变量中创建一只狗,然后将其分配给名为 Spot 的新变量,则两个变量尽管名称不同,但都会引用同一个对象:
Dog fido = new Dog;
Dog spot = fido; // now fido and spot refer to the same object
如果你想给变量一个“名称”,请考虑给类一个名称属性:
class Dog {
private String name;
public Dog(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
现在,如果您愿意,您可以为每个 Dog 对象指定其自己的(半)唯一名称。
关于java - 使用字符串值创建变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59170883/