java - 使用字符串值创建变量名

标签 java class variables object

这是一个简单的问题(我认为)

假设我有这段代码(假设我有一个狗类)

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/

相关文章:

java - OpenGL:正交投影

C++ - 在树的递归中返回

Java - 弃用的方法 - 怎么办?

bash - 如何在 while 循环中将变量设为 "read"

java - 可空双

java - 如果我使用 -D 设置系统属性,我可以从我的代码中访问它吗?

java - Exoplayer 库版本冲突

c# - 使用单独的类,全局/静态类?

PHP访问类方法的区别

wix - WIX:如何动态设置msi输出文件的名称