Enum 全称 Enumeration ,是Java中 在jdk5之后引入的一种类型,在Java开发中,有着广泛的使用(见识了公司的实际项目后感触颇深),在对于编码、类别、形式等列举式的数据很适用;
Enum 枚举类与普通class 没有什么不同 , 只是声明的时候类型为 enum , 枚举类也可以有它的 属性 方法 实现接口,但不同的是,所有枚举类都继承了 Java.lang.Enum父类,所以不能再 继承其他类;
自有的常用方法 :
T[] values() 返回该枚举的所有值
int ordinal() 返回枚举的 序数 即其所在的位置
Demo 1:
package enumeration;
/**
* Created by liuyuanju1 on 2017/9/4.
*/
public enum SimpleEnum {
MON,TUE,WED,THU,FRI; //这里相当于声明了 五个类型为 SimpleEnum的 枚举类
public static void main(String[] args) {
for(SimpleEnum e : SimpleEnum.values()){
System.out.println(e.toString());
}
System.out.println("----------------------");
System.out.println("MON 的序数为 :" + SimpleEnum.MON.ordinal()
+ "名称是 :" + SimpleEnum.MON.name()
);
System.out.println("----------------------");
SimpleEnum demo = SimpleEnum.MON;
switch (demo){
//枚举类可以用在对一些固定值得 switch的遍历中,这种用法 就相当于 设置 静态常量一样,但有很多优点
case MON :
System.out.println("Mon");
break;
case TUE :
System.out.println("Fue");
break;
case WED :
System.out.println("Wed");
break;
case THU :
System.out.println("Thu");
break;
case FRI :
System.out.println("Fri");
break;
}
}
}
输出结果:
Demo2: 枚举类 也可以有自己的属性 和方法 ,这一点和普通的class类没有区别
package enumeration;
/**
* Created by liuyuanju1 on 2017/9/4.
*/
public enum EnumDemo {
//必须声明一个参数为属性对应类型的构造方法(不能是public)。否则编译器会报undefined 异常
Vedio(1,"视频"), Audio(2,"音频"), Text(3,"文本");
int value;
String name;
EnumDemo(int value, String name){
this.value = value;
this.name = name;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "value : " + this.value + ", name : " + this.name;
}
public static void main(String[] args) {
System.out.println(EnumDemo.Audio.toString());
for(EnumDemo e : EnumDemo.values()){
System.out.println(e.value);
System.out.println(e.name);
}
}
}