- ベストアンサー
enum列挙子に使える文字列と使えない文字列
- Javaのenumで使える列挙子の法則性に興味があります。
- 「?」は通って「!」はエラーって、コンパイルを試みた後に結果を知ると、色々とムカつきます。
- enumで使える列挙子(要素)のタイプが載ってるサイト、enumの列挙子に使うとエラーになってしまう例が載ってるサイトなどを紹介してくれるとありがたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Javaで識別子(クラス名や列挙子名や変数名など)に使える文字は、Java文字とJava数字であり、先頭に限ってはJava文字のみとなっています。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.8 先頭にも使える文字(Java文字)かどうかは java.lang.Character.isJavaIdentifierStart(char) で調べられます。 http://docs.oracle.com/javase/jp/7/api/java/lang/Character.html#isJavaIdentifierStart%28char%29 先頭以外には使える文字(Java文字またはJava数字)かどうかは java.lang.Character.isJavaIdentifierPart(char) で調べられます。 http://docs.oracle.com/javase/jp/7/api/java/lang/Character.html#isJavaIdentifierPart%28char%29 例えば、下記の様なコードを実行する事で判別する事が出来るでしょう。 System.out.println(Character.isJavaIdentifierPart('?')); System.out.println(Character.isJavaIdentifierPart('→')); System.out.println(Character.isJavaIdentifierStart('!')); // 先頭に使えるか System.out.println(Character.isJavaIdentifierStart('☆')); // 先頭に使えるか
その他の回答 (2)
- teketon
- ベストアンサー率65% (141/215)
1月の1が通りません。 識別子について調べるといいです。 予約語と識別子は、プログラムで最初に抑えるべき基本です。
- Tacosan
- ベストアンサー率23% (3656/15482)
ちなみにどんなエラーになったんでしょうか?
補足
javac Main.java Main.java:2: エラー: \65297は不正な文字です enum Ng{1月,1月,→,!,☆} ^ Main.java:2: エラー: '}'がありません enum Ng{1月,1月,→,!,☆} ^ Main.java:2: エラー: \8594は不正な文字です enum Ng{1月,1月,→,!,☆} ^ Main.java:2: エラー: \65281は不正な文字です enum Ng{1月,1月,→,!,☆} ^ Main.java:2: エラー: \9734は不正な文字です enum Ng{1月,1月,→,!,☆} ^ エラー5個
お礼
さんきゅー