gpt4 book ai didi

java - 为什么枚举常量类体可以定义任意实例字段和方法,但不能声明静态成员或定义构造函数

转载 作者:行者123 更新时间:2023-12-01 04:52:34 25 4
gpt4 key购买 nike

在 James Gosling 的《Java 编程语言》中,它指定了

“与其他匿名内部类一样,枚举常量类体可以定义任意实例字段,并且方法,但不能声明静态成员或定义构造函数。另请注意,因为枚举常量是隐式静态字段,这些匿名内部类没有封闭实例。”

我尝试在以下代码中执行此操作并收到错误

“字段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);

}

为什么会这样?

最佳答案

只能在类中声明静态变量。

关于java - 为什么枚举常量类体可以定义任意实例字段和方法,但不能声明静态成员或定义构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com