James Gosling による The Java Programming Language では、次のように指定されています。
「他の匿名内部クラスと同様に、列挙定数クラス本体は任意のインスタンス フィールドとメソッドを定義できますが、静的メンバーを宣言したり、コンストラクタを定義したりすることはできません。また、列挙定数は暗黙的に静的フィールドであるため、これらの匿名内部クラスには囲んでいるインスタンスがありません。」
私は次のコードでそれをやろうとしましたが、エラーが発生しました
「フィールド pieceType は静的に宣言できません。静的フィールドは、静的またはトップレベルの型でのみ宣言できます」 (どういう意味ですか)
package com.example;
enum ChessPiece{
PAWN{
@Override
void pieceName(String name) {
// TODO Auto-generated method stub
System.out.println("PAWN");
}
},
ROOK{
@Override
void pieceName(String name) {
// TODO Auto-generated method stub
System.out.println("ROOK");
}
},
QUEEN{
static String pieceType = "QUEEN"; // ERROR
@Override
void pieceName(String name) {
// TODO Auto-generated method stub
System.out.println("QUEEN");
}
};
abstract void pieceName(String name);
}
なぜそうなのですか?