8

ここで問題があります。SpecialCharacterField.java を作成しました。これは、いくつかの特殊文字をリストする列挙型クラスです。

SpecialCharacterField.java

package bp.enumfield;

public enum SpecialCharacterField {
   +, #;
}

行の私の日食でpublic enum SpecialCharacterField{は:それが言うエラーがあります: Syntax error, insert "EnumBody" to complete EnumDeclaration

助けてください。前もって感謝します。

4

3 に答える 3

11

このようなことをして、

public enum SpecialCharacterField{
   PLUS("+"),
   HASH("#");

   private String value;
   private SpecialCharacterField(String value)
   {
      this.value = value;
   }

   public String toString()
   {
      return this.value; //This will return , # or +
   }
}
于 2012-07-12T05:00:39.817 に答える
5

これらの文字は、Java 言語の識別子の一部にすることはできません。JVM 自体はそのような制限を課していないことに注意してください (./; と [ のみが禁止されます)。そのため、バイトコードを直接記述した場合は、そのような名前を使用できます。ただし、これは通常、望ましい方法ではありません。

于 2012-07-12T04:56:58.393 に答える
3

列挙型は、通常のクラスと同じようにフィールドとゲッターを持つことができます。

public enum SpecialCharacterField{
   Plus('+'),
   Hash('#');

   private final char character;
   private SpecialCharacterField(char character) {
      this.character = character;
   }

   public char getCharacter() {
      return character;
   }
}

注:オーバーライドは避けtoString()てください - オーバーライドはアンチパターンです: これtoString()は「人間の目だけ」のためのものです - コードで依存するべきではありません。

于 2012-07-12T05:47:12.283 に答える