在java中,枚举是一个类,可以具有构造函数,方法,实例变量。
类似这样:
enum color {
red(10), black(20), yellow(30), blue(40);
//实例变量
private int price;
//构造方法
color(int price) {
this.price = price;
System.out.println(this.name());
}
//重载构造方法
color(){
this.price = -1;
}
//实例方法
public int getPrice() {
return this.price;
}
}
java的关键字enum定义的枚举是继承自java.lang.Enum这个抽象类,所以对于color,可以在其中定义抽象方法,而“red”其实是color的内部类,只是我们调用的时候,编译器自动将其实例化返回对象给我们。
所以每个内部类各自拥有color的一份变量。
详解:http://blog.csdn.net/sup_heaven/article/details/35559117
如图:
for (color cc : color.values()) {
System.out.println(cc.name()+" "+cc.getPrice());
}
同时对于color中声明的内部类,当声明一个color的变量时,会为每个内部类调用一次构造函数,如下:
enum color {
red(10), black(20), yellow(30), blue(40);
//实例变量
private int price;
//构造方法
color(int price) {
this.price = price;
System.out.println(this.name()); //打印出枚举类的名称
}
//重载构造方法
color(){
this.price = -1;
}
//实例方法
public int getPrice() {
return this.price;
}
public void setPrice(int price){
this.price = price;
}
}
mian函数
public static void main(String[] args) {
color c = color.black;
}
最后:
在枚举中声明的枚举变量(内部类)都是默认使用public static final修饰的。
链接:
java枚举类详解