Специальные символы в перечислении

Я хочу поместить специальные символы, круглые скобки ("(" и ")" и апостроф (") в перечисление.

У меня было это:

<code>private enum specialChars{
   "(", ")", "'"
}
</code>

но это не работает. Java говорит что-то о недействительных токенах. Как я могу решить это?

Grtz me.eatCookie ();

 MilkyWayJoe01 мая 2012 г., 16:36

Ответы на вопрос(3)

Решение Вопроса

private enum SpecialChars{
   COMMA(","),
   APOSTROPHE("'"),
   OPEN_PAREN("("),
   CLOSE_PAREN(")");

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

   public String toString()
   {
      return this.value; //will return , or ' instead of COMMA or APOSTROPHE
   }
}

Пример использования:

public static void main(String[] args)
{
   String line = //..read a line from STDIN

   //check for special characters 
   if(line.equals(SpecialChars.COMMA)      
      || line.equals(SpecialChars.APOSTROPHE)
      || line.equals(SpecialChars.OPEN_PAREN) 
      || line.equals(SpecialChars.CLOSE_PAREN)
   ) {
        //do something for the special chars
   }
}
 01 мая 2012 г., 22:15
Голосование вниз за переопределение toString () и использование String для представления одного символа.
 02 мая 2012 г., 00:59
Здорово, отрицательные мнения за несогласие с тобой. Настоящий зрелый.
 02 мая 2012 г., 16:48
Отрицательное голосование основано на моих убеждениях и опыте. Даже не посмотрел ваше имя перед вашим комментарием. Береги себя.
 30 мар. 2016 г., 14:57
@ Эдвард Ты переопределилtoString() как в примере выше?
 30 мар. 2016 г., 13:18
Это не работает для меня: мой компилятор жалуется:Type mismatch: cannot convert from EnumTest.SpecialChars to String

private enum SpecialChars {
   LEFT_BRACKET('('),
   RIGHT_BRACKET(')'),
   QUOTE('\'');

   char c;

   SpecialChars(char c) {
     this.c = c;
   }

   public char getChar() {
     return c;
   }
}

va. Вы можете переопределитьtoString если вы хотели бы ихdisplayed по-другому.

public enum SpecialChars {

    OPEN_PAREN {
        public String toString() {
            return "(";
        }
    },

    CLOSE_PAREN {
        public String toString() {
            return ")";
        }
    },

    QUOTE {
        public String toString() {
            return "'";
        }
    }

}
 01 мая 2012 г., 16:38
Не очень хорошая идея переписать метод toString ().
 01 мая 2012 г., 16:40
@EugeneKuleshov Вы являетесьsupposed переопределить toString () для каждого класса, который вы создаете.
 01 мая 2012 г., 17:10
Это не имеет ничего общего с конкуренцией. Есть куча специфических символов, которые просто не могут быть напечатаны (например, \ n, \ t, \ r), поэтому в этом случае я стою на своем. В этом конкретном случае родительский метод toString () на самом деле более удобен для программистов.
 01 мая 2012 г., 16:42
@EugeneKuleshov Что на самом деле не очень хорошая идея, это занижать конкурирующие ответы :)
 01 мая 2012 г., 16:40

Ваш ответ на вопрос