在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);
}
为什么会这样?