Java枚举类型
一、枚举定义
枚举不能定义在静态方法中
一般自定义的枚举类型都属于Enum的子类型EnumType
它默认就有两个静态方法(类方法):values()和valueOf()
values()返回的是EnumType类型的实例数组
valueOf()返回的是EnumType类型的实例
二、举例:自定义Color枚举类型
Color{ WHITE, BLACK, GRAY }
Color c = Color.GRAY;
那么:
Color.valueOf(“BLACK”) == Color.BLACK == Color.values()[1]
因为它们返回的都是Color类型
c.toString() == c.name()
因为它们返回的是字符串
三、枚举的构造函数和成员变量
枚举的构造函数只能是private
枚举的成员变量则不受限制,但如果在枚举实例里面定义的方法需要访问枚举类型中的成员变量,则该成员变量至少要是protected,否则无法继承
package newpack17;
interface d{
public String getDescription();
public int getI();
}
public enum AnyEnum implements d{
Constants_A{
public String getDescription() {
return “我是枚举成员A”;
}
public int getI() {
return i;
}
},
Constants_B{
public String getDescription() {
return “我是枚举成员B”;
}
public int getI() {
return i;
}
},
Constants_E(“枚举成员E”,88){
public String getDescription() {
return this.str;
}
public int getI() {
return this.it;
}
},
Constants_C,
Constants_D{
public String getDescription() {
return “我是枚举成员D”;
}
public int getI() {
return i;
}
};
private AnyEnum(String str,int i) {
this.str = str;
this.it=i;
}
private AnyEnum() {}
public String getDescription() {
return “我是枚举成员XXX”;
}
public int getI() {
return 10000;
}
public int it; // protected也行,但不能是private
protected String str;
private static int i = 5; // 静态成员 public protected,private都行
public static void main(String[] args) {
for(int i = 0; iSystem.out.println(AnyEnum.values()[i]+”调用getDescription()方法为:”+AnyEnum.values()[i].getDescription());
System.out.println(AnyEnum.values()[i]+”调用getI()方法为:”+AnyEnum.values()[i].getI());
}
}
}
为了让学习变得轻松、高效,今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群:9285,05736
还没有评论,来说两句吧...