enum

https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.9

The body of an enum declaration may contain enum constants. An enum constant defines an instance of the enum type.

格式:

[EnumConstantList] [,] [; {ClassBodyDeclaration}]

 语法:

https://docs.oracle.com/javase/specs/jls/se8/html/jls-2.html

The syntax {x} denotes zero or more occurrences of x.

The syntax [x] denotes zero or one occurrences of x.

// 简单的枚举
enum SimpleEnum {
    RED, YELLOW, GREEN
}

// 复杂的枚举
enum ComplexEnum {
    RED(255, 0, 0), YELLOW(255, 255, 0), GREEN(0, 255, 0);

    private final int r;
    private final int g;
    private final int b;

    ComplexEnum(int r, int g, int b) {
        this.r = r;
        this.g = g;
        this.b = b;
    }

    public int getR() {
        return r;
    }

    public int getG() {
        return g;
    }

    public int getB() {
        return b;
    }

}

测试:

    public static void main(String[] args) {
        
        System.out.println(SimpleEnum.GREEN);
        System.out.println();
        System.out.println(ComplexEnum.GREEN);
        System.out.println(ComplexEnum.GREEN.getR());
        System.out.println(ComplexEnum.GREEN.getG());
        System.out.println(ComplexEnum.GREEN.getB());
    }

运行结果:

GREEN

GREEN
0
255
0

看着就像静态变量,如下是一个小测试:

enum EnumTest {
    A, B, C;
}
E:>javac EnumTest.java

E:>javap EnumTest.class
Compiled from "EnumTest.java"
final class EnumTest extends java.lang.Enum<EnumTest> {
  public static final EnumTest A;
  public static final EnumTest B;
  public static final EnumTest C;
  public static EnumTest[] values();
  public static EnumTest valueOf(java.lang.String);
  static {};
}

静态变量 (代码按照一定规则生成,逗号分隔简单明了;剩余部分和普通类基本一致 )

静态块

实例变量

实例块

构造函数

。。。

原文地址:https://www.cnblogs.com/zno2/p/6705314.html