2013-07-17 73 views
-2
 public enum Categories { 
     GENERAL, LIGHTS, EFFECTS, INTERACTIVE, UI("UI"), OPTIMIZATIONS, PARSERS, ANIMATION, MATERIALS, ABOUT; 

     private String name; 

     Categories() { 
      name = toString().toLowerCase(Locale.getDefault()); 
      name = name.substring(0, 1).toUpperCase(Locale.getDefault()) + name.substring(1, name.length()); 
     } 

     Categories(String name) { 
      this.name = name; 
     } 

     public String getName() { 
      return name; 
     } 

    } 

在枚舉中以「GENERAL,EFFECTS」開頭的第一行我想知道這些是什麼?尤其是UI(「UI」)。這些是否意味着常量?爲什麼UI(「UI」)有(和)其餘部分不?在Java中定義一個常量

在此先感謝...

+3

在問這個問題之前,你已經完成了關於枚舉的學習嗎? – Patrick

+0

我不確定那是我需要學習的東西。謝謝你澄清。 – Giuseppe

回答

2
public enum Categories { 
    GENERAL, LIGHTS, EFFECTS, INTERACTIVE, UI("UI"), ... 

這些代表通過與類名進行限定爲

Categories.GENERAL, Categories.LIGHTS, Categories.UI, ... 

Enums表現很像,除了它們都是爲了代表常量一類Enum常量訪問。所以,他們也可以有構造函數和字段。而GENERAL使用的無參數構造

Categories() { 
    name = toString().toLowerCase(Locale.getDefault()); 
    name = name.substring(0, 1).toUpperCase(Locale.getDefault()) + 
      name.substring(1, name.length()); 
} 

UI("UI")使用的其它重載的構造(因爲它通過匹配的字符串參數)

Categories(String name) { 
    this.name = name; 
} 

就像一個類,這Enum限定構件字段以及

private String name; 

它可以通過公共獲取方法作爲

Categories.UI.getName(); 
+0

這是非常豐富的。感謝您的發表。 – Giuseppe

1

它本身不是常量,它是枚舉值。

UI枚舉正在使用帶「UI」值的字符串參數調用構造函數。如果你沒有通過「UI」,那麼值將會是「Ui」,因爲無參數的構造函數會被調用。