枚举中的特殊字符
我想把特殊字符,括号(’(’和’)’)和撇号(’)放在枚举中。
我有这个:
private enum specialChars{ "(", ")", "'" }
但它不起作用。 Java说了一些关于无效令牌的事情。 我怎么解决这个问题?
Grtz me.eatCookie();
你可以这样做:
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 } }
枚举常量必须是有效的Java标识符。 如果您希望它们以不同方式显示,则可以覆盖toString
。
public enum SpecialChars { OPEN_PAREN { public String toString() { return "("; } }, CLOSE_PAREN { public String toString() { return ")"; } }, QUOTE { public String toString() { return "'"; } } }
你应该使用这样的东西:
private enum SpecialChars { LEFT_BRACKET('('), RIGHT_BRACKET(')'), QUOTE('\''); char c; SpecialChars(char c) { this.c = c; } public char getChar() { return c; } }