2012-08-30 53 views
-2

如何訪問Name字段?從外部訪問Java的枚舉字段

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; 
    } 
} 
+2

目前尚不清楚你的問題是什麼。你能澄清一下嗎? – Bill

+0

另外你的例子有一些編譯錯誤。請修復它們。 –

回答

0

如果我理解正確的話,我相信OP在問:

「給定一個字符串,‘A1’,返回類型動物的目標與價值Animal.a1」

...在這種情況下, ,你正在尋找的方法是Enum.valueOf(類,字符串)

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

這可以做到,但是你有一些語法錯誤。關鍵是爲枚舉成員變量提供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(); 
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 

,但更好地使所有領域私人並使用吸氣:

Animals.Animal.a1.getName()