Java枚举类是final特殊类,不可继承,但可定义私有字段、构造方法和公共getter方法;通过在枚举中声明字段、常量初始化传值并提供getter,即可获取属性值,如Color.RED.getR()返回255。

Java 枚举类本身是 final 的特殊类,不能被继承,但可以像普通类一样定义私有字段、构造方法和公共 getter 方法。要通过 getter 获取枚举常量的属性值,关键是在枚举中声明字段、在每个枚举常量初始化时传入值,并提供对应的 getter。
定义带属性和 getter 的枚举
以下是一个标准写法示例,定义一个表示颜色的枚举,每个颜色有 RGB 值和中文名称:
public enum Color {
RED(255, 0, 0, "红色"),
GREEN(0, 255, 0, "绿色"),
BLUE(0, 0, 255, "蓝色");
private final int r;
private final int g;
private final int b;
private final String cnName;
// 构造方法(必须是 private 或默认,不能 public)
Color(int r, int g, int b, String cnName) {
this.r = r;
this.g = g;
this.b = b;
this.cnName = cnName;
}
// 提供 getter 方法
public int getR() { return r; }
public int getG() { return g; }
public int getB() { return b; }
public String getCnName() { return cnName; }
// 可选:提供组合方法,如获取十六进制颜色码
public String toHex() {
return String.format("#%02X%02X%02X", r, g, b);
}
}
如何使用 getter 获取属性
直接通过枚举常量调用 getter 即可:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
Color.RED.getR()→ 返回255 -
Color.BLUE.getCnName()→ 返回"蓝色" -
Color.GREEN.toHex()→ 返回"#00FF00"
注意事项
- 枚举字段建议用
private final修饰,确保不可变性 - 构造方法不能是
public,否则编译报错;省略访问修饰符或显式写private都可以 - 枚举常量列表后必须跟分号
;,才能定义字段、构造器和方法(否则语法错误) - 如果只读属性不多,也可用
public final字段替代 getter,但封装性稍弱
扩展:根据属性查找枚举常量(反向查询)
若需根据某个属性(如中文名)找到对应枚举,可添加静态查找方法:
立即学习“Java免费学习笔记(深入)”;
public static Color fromCnName(String cnName) {
for (Color c : Color.values()) {
if (c.cnName.equals(cnName)) {
return c;
}
}
throw new IllegalArgumentException("No color found for name: " + cnName);
}
调用:Color.fromCnName("红色") → 返回 Color.RED

















