2011-12-05 50 views
-2

可能重複:
Java enum elements with spaces?如何在Java中的switch語句中使用兩個關鍵字(如「好時光」)來訪問字符串?

下面是示例代碼:

public enum InstrumentType{ 

     GUITAR,BANJO,MANDOLIN,DOBRO, FIDDLE ,LAMBEG DRUM, 

     public String toString(){ 
      switch(this){ 
      case GUITAR: 
       return "Guitar"; 
      case BANJO: 
       return "Banjo"; 
      case DOBRO: 
       return "Dobro"; 
      case FIDDLE: 
       return "Fiddle"; 

      case LAMBEG DRUM: 
       return "Lambeg drum"; 

      default: 
       return "Unspecified"; 
      } 
     } 

} 

如何在交換機的情況下訪問兩個關鍵字,如 「Lambeg鼓」? 我不想使用LAMBEG_DRUM或LAMBEGDRUM。 有什麼建議嗎? 在此先感謝。

+2

枚舉標識符必須遵循與Java中的變量相同的命名規則,因此不能使用空格開頭。 – NullUserException

+0

既然你甚至不能聲明'LAMBEG DRUM'(標識符不能有空格),我沒有看到用例... – cHao

+0

好,但如何實現呢?意味着還有另一種方式嗎? – WAnant

回答

0

這是不可能的。關鍵字case後面的值是一個標識符,或者其值爲一個常數值(例如整數,枚舉或布爾值)的值。

Java中的標識符中不能有空格。

看來您的問題基本上是關於Java中的有效命名,您提出的解決方案是無效的。

0

總之:「你不行」。 Java變量/類標識符不能包含空格。這條規則有一些真正可怕的黑客攻擊,但是真的沒有理由這樣做。

0

首先,名稱「LAMBEG DRUM」是而不是一個有效的枚舉標識符,您不能在那裏有一個空間,也不能在交換機中。使用「_」來分隔兩個單詞,這是慣例:「LAMBEG_DRUM」

+0

我使用枚舉來實現單個關鍵字字符串,有沒有更好的方法? – WAnant

+0

@WAnant你說你不能使用「_」或LAMBEGDRUM,那麼LAMBEG1DRU怎麼樣......如果這不起作用,試試LAMBEG2DRUM ..有無限的可能性。問題? :d – rana

0

您可以使用字段和構造函數來擴展枚舉。

public enum InstrumentType{ 

     GUITAR("Guitar"), 
     BANJO("Banjo") 

     private final String name; 

     private InstrumentType(String name) { 
      this.name = name;   
     } 

     public String toString(){ 
      return this.name; 
     } 

} 
1

不要在toString()方法中使用case語句。您仍然必須使用LAMBEG_DRUM或枚舉名稱中沒有空格的內容,但可以向構造函數添加描述並在toString()中使用它。

public enum InstrumentType { 
      GUITAR("Guitar"), // 
      BANJO("Banjo"), // 
      MANDOLIN("Mandolin"), // 
      DOBRO("Dobro"), // 
      FIDDLE("Fiddle"), // 
      LAMBEG_DRUM("Lambeg Drum"); 

      private String description; 

      private InstrumentType(String description) { 
        this.description = description; 
      } 

      @Override 
      public String toString() { 
        return description; 
      } 
    } 
相關問題