enum Colours {
RED,
GREEN {
public static final int hex = 0x00ff00;
public final int hex2 = 0x00ff00; // Try it without static, just in case...
void f() {
System.out.println(hex); // OK
System.out.println(hex2); // OK
}
},
BLUE
}
Здесь и RED
, GREEN
и BLUE
имеют тип Colours
, который не знает о hex
, hex2
или f
, поэтому ваш код не компилируется .
Что вы можете сделать, это переместить их в определение enum:
enum Colours {
RED(0xff0000, 0xff0000),
GREEN(0x00ff00, 0x00ff00),
BLUE(0x0000ff, 0x0000ff);
final int hex;
final int hex2;
Colours(int hex, int hex2) {
this.hex = hex;
this.hex2 = hex2;
}
void f() {
System.out.println(hex); // OK
System.out.println(hex2); // OK
}
}
Таким образом, все это будет компилироваться:
System.out.println(Colours.GREEN.hex);
System.out.println(Colours.GREEN.hex2);
Colours.GREEN.f();