这是一个简单的问题(我认为)
可以说我有这段代码(假设我有一个狗课)
String name = "dog";
dog name = new dog();
我怎样才能让Java将名称识别为字符串并命名对象为dog?
尽管您可以使用某些脚本语言(例如PHP)来完成您想做的事情(并且这个问题经常被许多启动Java的PHP程序员问到),但这不是Java的工作方式,实际上变量名远没有Java重要您可能会意识到,甚至在代码编译后也几乎不存在。更重要的是关键是变量引用 -能够在程序的特定位置访问特定对象的能力,并且可以通过使用Map作为一种方式使String轻松引用对象。
例如
Map<String, Dog> dogMap = new HashMap<String, Dog>();
dogMap.put("Fido", new Dog("Fido"));
Dog myPet = dogMap.get("Fido");
或者,您可以通过许多其他方式(例如,通过数组,ArrayList,LinkedList或其他几个collectinos)获得对对象的引用。
编辑 您的状态:
关键是,在我的代码中,我将使用一种方法来创建对象,该对象的名称是任意的,但我需要使其具有动态性,因为它不会是临时的,因此该对象的实际名称必须更改或我将覆盖先前声明的对象。
这就是我说变量名并不像您认为的那么重要时的意思。变量名称不是 “对象名称”(实际上实际上不存在)。
例如,如果您在名为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对象赋予自己的(半)唯一名称。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。