目录
1.概述
2.常用API
2.1.清单
2.2.代码示例
2.2.1.ordinal
2.2.2.compareTo
2.2.3.toString
2.2.4.valueOf
2.2.5.values
3.成员变量和带参构造
1.概述
枚举变量指的是变量的取值只在一个有限的集合内,如性别、星期几、颜色等。从JDK5开始,JAVA支持了枚举类型。
- 使用enum关键字声明枚举类型
- 枚举类可以理解为一个集合,enum内部有多少个值,就有多少个实例对象。
- 枚举类不能直接new,而是由JVM加载枚举类的时候自动创建枚举类内部的示例。
- 枚举内部的每个实例都是全局唯一的。
- 枚举类构造方法只能为private
代码示例:
枚举类:
public enum Size {
SMALL,MEDIUM,LARGE,EXTRA_LARGE
}
测试:
public class test {
public static void main(String[] args) {
Size s1=Size.SMALL;
Size s2=Size.SMALL;
Size s3=Size.LARGE;
System.out.println(s1==s2);
System.out.println(s1==s3);
}
}
测试结果:
2.常用API
2.1.清单
所有enum类型都是Enum的子类,继承了Enum的方法,具有以下API:
ordinal | 返回枚举值所在的索引位置,从0开始 |
compareTo | 比较两个枚举值的索引位置大小,返回自己的索引比被比较者大多少 |
toString | 返回枚举值的字符串表示 |
valueOf | 将字符串初始化为枚举对象 |
values | 返回所有的枚举值 |
2.2.代码示例
2.2.1.ordinal
public static void main(String[] args) {
System.out.println(Size.SMALL.ordinal());
System.out.println(Size.MEDIUM.ordinal());
System.out.println(Size.LARGE.ordinal());
System.out.println(Size.EXTRA_LARGE .ordinal());
}
}
2.2.2.compareTo
public static void main(String[] args) {
System.out.println(Size.SMALL.compareTo(Size.MEDIUM));
}
2.2.3.toString
public static void main(String[] args) {
System.out.println(Size.SMALL.toString().equals("SMALL"));
}
2.2.4.valueOf
valueOf存在方法重载:
public static void main(String[] args) {
System.out.println(Size.valueOf("SMALL")==Size.SMALL);
System.out.println(Enum.valueOf(Size.class,"SMALL")==Size.SMALL);
}
2.2.5.values
public static void main(String[] args) {
for (Size value : Size.values()) {
System.out.println(value);
}
}
3.成员变量和带参构造
有时候我们用枚举类的时候不只希望它能表示一种类型,还希望它能携带一些信息,这时候就需要枚举类有自己的成员变量和带参构造。
比如使用枚举类来表示HTTP请求的结果,我们希望它除了表示成功失败,还能带有状态码。
public enum HttpResult {
//注意:成员实例只能写在开头,这是强制规定,否则会报错
SUCCESS(200),FAIL(500);
private int code;
private HttpResult(int code){
this.code=code;
}
public int getCode() {
return code;
}
}