特殊文字である括弧('('および')')とアポストロフィ(')を列挙型に入れたいと思います。
私はこれを持っていました:
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;
}
}