Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用字符串值创建变量名_Java_Class_Variables_Object - Fatal编程技术网

Java 使用字符串值创建变量名

Java 使用字符串值创建变量名,java,class,variables,object,Java,Class,Variables,Object,这是一个简单的问题(我想) 假设我有这个代码(假设我有一个dog类) 如何让java将名称识别为字符串并将对象命名为dog?虽然您可以在一些脚本语言(如PHP)中进行尝试(许多启动java的PHP程序员经常会问这个问题),但这不是java的工作方式,事实上,变量名的重要性远远低于您可能意识到的程度,甚至在编译代码后几乎不存在。更重要和关键的是变量引用——在程序中的特定点访问特定对象的能力,通过使用映射作为一种方式,可以让字符串轻松引用对象 比如说 Map<String, Dog> d

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

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


如何让java将名称识别为字符串并将对象命名为dog?

虽然您可以在一些脚本语言(如PHP)中进行尝试(许多启动java的PHP程序员经常会问这个问题),但这不是java的工作方式,事实上,变量名的重要性远远低于您可能意识到的程度,甚至在编译代码后几乎不存在。更重要和关键的是变量引用——在程序中的特定点访问特定对象的能力,通过使用映射作为一种方式,可以让字符串轻松引用对象

比如说

Map<String, Dog> dogMap = new HashMap<String, Dog>();
dogMap.put("Fido", new Dog("Fido"));

Dog myPet = dogMap.get("Fido");

如果你想给变量一个“name”,考虑给类一个名称属性:

class Dog {
   private String name;

   public Dog(String name) {
      this.name = name;
   }

   public String getName() {
      return name;
   }
}

现在,如果您愿意,您可以为每个狗对象指定其自己的(半)唯一名称。

我想您不会想到


你为什么要这样做?当然,有更好的方法来实现您的目标。如果您想要了解Java的反射API,您可能应该了解它。我认为这个问题的标题和内容不一致。看起来您并没有试图创建一个名称基于字符串值的变量。更确切地说,您似乎希望根据字符串值设置变量的类。如果是后者,工厂模式可能会有所帮助。@fge:我想我们需要更多地了解他为什么要这样做。我在这里的经验是,90%以上的时间反射并不能解决海报试图解决的所有问题。问题是,在我的代码中,我将使用一种方法创建对象,对象的名称是任意的,但我需要它是动态的,因为它不是临时的,因此,对象的实际名称必须更改,否则我将重写之前声明的对象。好的,这个答案中描述的方法允许您这样做!我正在努力让它发挥作用,我将在大约30分钟后发回,告诉你它是如何进行的。如果我无法得到一个哈希图来为我工作,我将发布我正在尝试做的事情的完整信息(有点长)@charleshorvath:请让我们知道它是如何进行的——祝你好运!!
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;
   }
}
private static void test () {
  Animal animal = Animal.valueOf("Dog");
}

enum Animal {
  Dog,
  Cat,
  Cow,
  Pig,
  Rat,
  Ant,
  Gnu;
}