枚举是一个特殊的类,一般表示一组常量,比如一年中的四个季节,各个常量用逗号分割开来。
每个枚举都是通过class在内部实现,而且所有的枚举值都是public static final.
枚举和普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用private访问修饰符,所以外部无法调用。
枚举既可以包含具体的写法,也可以包含抽象的写法。如果枚举包含抽象方法,则每个枚举类的实例都必须实现它。
1、构造函数
1.1枚举常量
class enmuTest {
enum Color{
Red,Green,Blue;
}
}
1.2枚举类成员
class enmuTest {
enum Color {
Red, Green, Blue;
// 构造函数
private Color() {
System.out.println(this.toString());
}
// 成员函数
public void colorInfo() {
System.out.println("that color");
}
}
public static void main(String[] args) {
Color co = Color.Blue;
co.colorInfo();
}
}
2、使用枚举
2.1for迭代
class enmuTest {
enum Color {
Red, Green, Blue;
}
public static void main(String[] args) {
for (Color ele:Color.values()) {
System.out.println(ele);
}
}
}
2.2switch
class enmuTest {
enum Color {
Red, Green, Blue;
}
public static void main(String[] args) {
Color myEle = Color.Red;
switch (myEle) {
case Red:
System.out.println(1);
break;
case Green:
System.out.println(2);
break;
case Blue:
System.out.println(3);
break;
default:
break;
}
}
}
2.3 常用方法
class enmuTest {
enum Color {
Red, Green, Blue;
}
public static void main(String[] args) {
for (Color ele : Color.values()) {
// 查看索引
System.out.println(ele + "at index" + ele.ordinal());
//使用valueof()返回枚举常量,不存在会报错
System.out.println(Color.valueOf("White"));
}
}
}