如何在另一个变量中保存对象的名称?

时间:2014-07-20 04:10:43

标签: java string

说我有对象:

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;位。

提前致谢!

4 个答案:

答案 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;回来,您可以拆分该字符串(名称)并获取结果数组的第二部分。

喜欢:

  • String name = lion.getClass()。getName(); - &GT; (name =&#34; Animal.lion&#34;)
  • String name = name.split(&#34; \。&#34;)[1]; - &GT; (姓名=&#34;狮子&#34;)