枚举:
- Java 枚举是一个特殊的类,一般表示一组常量。比如一年的四个季节,一年的12个月份等。
- Java 枚举使用 enum 关键字定义,各个常量使用”,“分割。
- Java 枚举类中的构造函数只能使用 private 修饰
- 枚举类中可以存在抽象方法,但是枚举类中的每个对象必须覆写该抽象方法
定义一个颜色枚举类
package practicePackage;
enum Color{
RED,GREEN,BLUE;
}
public class javaDemo {
public static void main(String[] args) {
Color c = Color.BLUE;
System.out.println(c);
}
}
内部类使用枚举
package practicePackage;
public class javaDemo {
enum Color{
RED,GREEN,BLUE;
}
public static void main(String[] args) {
Color c = Color.BLUE;
System.out.println(c);
}
}
迭代枚举元素
package practicePackage;
public class javaDemo {
enum Color{
RED,GREEN,BLUE;
}
public static void main(String[] args) {
for(Color var:Color.values()){
System.out.println(var);
}
}
}
SWITCH 语句中使用枚举
package practicePackage;
public class javaDemo {
enum Color{
RED,GREEN,BLUE;
}
public static void main(String[] args) {
Color myColor = Color.RED;
switch (myColor){
case GREEN -> System.out.println("green");
case BLUE -> System.out.println("blue");
case RED -> System.out.println("red");
}
}
}
枚举中的常用方法
Java 枚举类默认继承了 java.long.Enum类,Enum类是抽象类,并实现了java.lang.Seriablizable 和 java.lang.Comparable 两个接口。
- values() 方法返回枚举类中的所有值
- ordinal() 方法找出枚举常量的索引,类似数组
- valueOf() 方法返回指定字符串值的枚举常量
package practicePackage;
public class javaDemo {
enum Color{
RED,GREEN,BLUE;
}
public static void main(String[] args) {
Color myColor = Color.RED;
for(Color c:Color.values()){ // 调用 values()方法 ,迭代返回数组
System.out.println(c + " at index " + c.ordinal()); // 查看该常量索引
}
System.out.println(Color.valueOf("BLUE")); // 查看该常量的值
}
}
枚举类中的抽象方法实现
package practicePackage;
enum Color{
RED{
@Override
public String getColor() {
return "Color is red";
}
},GREEN{
@Override
public String getColor() {
return "Color is green";
}
},BLUE{
@Override
public String getColor() {
return "Color is blue";
}
};
public abstract String getColor();
}
public class javaDemo {
public static void main(String[] args) {
Color myColor = Color.RED;
System.out.println(myColor.getColor());
}
}
每个对象必须覆写该抽象方法;