说我有对象:
Animal lion = new Animal();
Animal elephant = new Animal();
Animal cheetah = new Animal();
我怎样才能存储动物的名字(狮子,大象,猎豹)?
我尝试过使用
for (int count = 0; count < 3; count++) {
String name = lion.getClass().getName();
但这只会给我&#34; Animal.lion&#34;,当我只想要&#34;狮子&#34;位。
提前致谢!
答案 0 :(得分:5)
对象没有&#34;名称&#34;。您将对象与变量混淆,并夸大了变量的重要性。重要的不是变量,而是 参考 。
如果要将对象与String关联,请使用Map。
如,
Map<String, Animal> animalMap = new HashMap<String, Animal>();
Animal lion = new Animal();
animalMap.put("lion", lion);
Animal elephant = new Animal();
animalMap.put("elephant", elephant);
Animal cheetah = new Animal();
animalMap.put("cheetah", cheetah);
然后
for (String key : animalMap.keySet()) {
System.out.printf("Animal name is %s%n", key);
}
另请注意,由于hakiko状态良好(他的答案为1+),因此可以通过多个变量引用一个对象,在这种情况下,哪个变量代表&#34; name&#34;对象??
答案 1 :(得分:2)
不,没有办法做到这一点。您为该对象实例提供引用该对象实例的变量的名称是未知的。
考虑您可以创建多个变量,其中所有变量都引用了同一个对象;对象实例的“名称”的想法是没有意义的,这个例子说明了这一点。
您可以在包含名称的对象中创建一个字段,并在创建对象时指定该名称,然后根据需要进行检索。
public class Television
{
private String name = null;
public String getName() { return name; }
public void setName(String givenName) { name = givenName; }
public Sample(String givenName) { setName(givenName); }
// add whatever you want to this class
}
答案 2 :(得分:2)
您可以稍微更改class Animal
。
class Animal
{
private String nameOfAnimal;
public Animal(String nameOfAnimal)
{
this.nameOfAnimal=nameOfAnimal;
}
public String getName()
{
return nameOfAnimal;
}
}
class Main
{
public static void main(String args[])
{
Animal lion=new Animal("lion");
Animal elephant=new Animal("elephant");
Animal cheetah=new Animal("cheetah");
System.out.println(lion.getName());
System.out.println(elephant.getName());
System.out.println(cheetah.getName());
}
}
INPUT:NOTHING
输出:
lion
elephant
cheetah
答案 3 :(得分:0)
我不确切地知道为什么你需要&#34;名称&#34;的变量,但解决您的具体问题: 作为表达式&#34; String name = lion.getClass()。getName();&#34;正在给你&#34; Animal.lion&#34;回来,您可以拆分该字符串(名称)并获取结果数组的第二部分。
喜欢: