枚举
日常求赞,感谢老板。
欢迎关注公众号:其实是白羊。干货持续更新中…
关键字enum
枚举类中的每个值都将映射到protected Enum(String name,int ordinal)构造函数上,在这里每个值的名称都会转换为一个字符串,序号表示创建的顺序
每个值都是一个Enum<E extends Enum>对象
可以理解为enum关键字声明的是类,里面的每个值都是对象(创建的对象)(自我理解)
常用操作
遍历enum
//遍历
for (MyEnum e : MyEnum.values()) {
System.out.println(e.name()+":"+e.ordinal());
}
输出:
a:0
b:1
c:2
switch
MyEnum myEnum=MyEnum.a;
switch (myEnum){
case a:
System.out.println("我是a");
break;
case b:
System.out.println("我是b");
break;
}
常用方法
-
int comparaTo(E o)
比较此枚举和制定对象的顺序。(比他小返回-1,比他大返回1,相等你猜返回啥)
-
Class getDeclaringClass()
返回与此枚举常量类型相对应的Class对象(就是获取class对象)
-
String name()
返回此枚举常量的名称,在枚举声明时对其声明
-
int ordinal()
返回枚举常量的序号
-
String toString()
返回枚举常量的名称
-
static <T extends Enum> T valueof(Class enumType ,String name)
返回带指定名称和指定枚举类型的枚举常量
自定义方法和属性
public enum EnumTest {
MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6) {
@Override
public boolean isRest() {
return true;
}
},
SUN(0) {
@Override
public boolean isRest() {
return true;
}
};
private int value;
private EnumTest(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public boolean isRest() {
return false;
}
}
public class Test {
public static void main(String[] args) {
System.out.println("EnumTest.FRI 的 value = " + EnumTest.FRI.getValue());
}
}
输出结果:
EnumTest.FRI 的 value = 5
外面有方法了,每个值自己才能重写
应用场景
-
常量
public enum Color { RED, GREEN, BLANK, YELLOW }
直接Color.RED.name()
-
switch
见上
总之每个枚举都可是某一类对象描述的集合
每个值都是一个包含这个对象某些描述信息的集合
最后
更多资源:其实是白羊
欢迎star
日常乞讨
- 如果你认为本文对你有帮助,还请「在看/转发/赞/star」,多谢
- 如果你还发现了更好或不同的想法,还请在留言区不吝赐教,一起探讨交流修改,万分感谢
欢迎关注公众号:「其实是白羊」干货持续更新中…