2011-12-05 3 views
-2

可能性の重複:以下
Java enum elements with spaces?Javaのswitch文で "good time"のような2つのキーワードを使用してstringにアクセスする方法は?

サンプルコードです:

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

enum識別子は、Javaの変数と同じ命名規則に従う必要があります。先頭にスペースを使用することはできません。 – NullUserException

+0

あなたは 'LAMBEG DRUM'(識別子にスペースを入れることはできません)を宣言することすらできないので、私はユースケースを見ていません... – cHao

+0

これをどうやって実現できますか?別の方法があるということですか? – WAnant

答えて

0

これはできません。キーワードcaseの後に続く値は、識別子、または定数値(整数、列挙型、ブール値など)に評価されるものです。

Javaの識別子にはスペースを入れることはできません。

あなたの質問は本質的にJavaでの有効な命名に関するもので、あなたが提案する解決策は無効であると思われます。

0

要するに「できません」。 Java変数/クラス識別子にはスペースを含めることはできません。このルールには本当に恐ろしいハッキングがいくつかありますが、そうする理由はまったくありません。

0

まず、 "LAMBEG DRUM"という名前はではなく、有効な列挙識別子であるです。そこにスペースを入れることはできず、スイッチ内にスペースを入れることもできません。 "_"を使用して2つの単語を区切ります。 "LAMBEG_DRUM"

+0

私は単一のキーワード文字列のためにこれを達成するためにenumを使用していますが、より良いアプローチがありますか? – 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や何かをenum名にスペースを入れずに使用する必要がありますが、コンストラクタに説明を追加してtoString()で使用することができます。

関連する問題