Специальные символы в перечислении
Я хочу поместить специальные символы, круглые скобки ('(' и ')') и апостроф ('), в перечисление.
У меня было это:
private enum specialChars{
"(", ")", "'"
}
но это не сработает. Java говорит что-то о недопустимых токенах.
Как я могу это решить?
Grtz
me.eatCookie();
Ответы
Ответ 1
Вы можете сделать что-то вроде этого:
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
}
}
Ответ 2
Константы Enum должны быть действительными идентификаторами Java. Вы можете переопределить toString
, если хотите, чтобы они отображались по-разному.
public enum SpecialChars {
OPEN_PAREN {
public String toString() {
return "(";
}
},
CLOSE_PAREN {
public String toString() {
return ")";
}
},
QUOTE {
public String toString() {
return "'";
}
}
}
Ответ 3
Вместо этого вы должны использовать что-то вроде этого:
private enum SpecialChars {
LEFT_BRACKET('('),
RIGHT_BRACKET(')'),
QUOTE('\'');
char c;
SpecialChars(char c) {
this.c = c;
}
public char getChar() {
return c;
}
}