来自外部的Java访问枚举字段

时间:2012-08-30 17:21:07

标签: java enums

我如何访问Name字段?

public class Animals {

    public enum animal{
        a1("CAT", 4),
        a2("DOG", 4);
    }

    String Name;
    int E;
    public animal(String Name, int E){
        this.Name = Name;
        this.E    = E;
    }
}

3 个答案:

答案 0 :(得分:1)

可以这样做,但是你有很多语法错误。关键是为枚举成员变量提供getter方法。

public enum Animal {
  a1("CAT", 4), a2("DOG", 4);
  private String Name;
  private int E;

  private animal(String Name, int E)
  {
    this.Name = Name;
    this.E = E;
  }

  public String getName() {
    return Name;
  }

  public int getE() {
    return E;
  }
}

然后,您可以在程序的其余部分中的任何位置访问这些值。

Animal.a1.getName();

答案 1 :(得分:0)

假设你有这样的内部enum

public class Animals {

    public enum Animal {
        a1("CAT", 4), a2("DOG", 4);

        final String Name;
        final int E;

        private Animal(String Name, int E) {
            this.Name = Name;
            this.E = E;
        }

        public String getName() {
            return Name;
        }
    }
}

可以使用(字段所以没有括号)

获取名称
Animals.Animal.a1.Name

但最好将所有字段设为私有并使用getter:

Animals.Animal.a1.getName()

答案 2 :(得分:0)

如果我理解正确,我相信OP正在问:

“给定一个字符串,”a1“,返回一个类型为Animal的对象,其值为Animal.a1”

...在这种情况下,您正在寻找的方法是Enum.valueOf(Class,String)

 String enumName = "a1";
 Animal a = Enum.valueOf (Animal.class (enumName));
 if (null == a) {
      // error handler …
 } else {
      // do something interesting with “a”
 }