枚举的定义
在Java中,枚举(enum
)是一种特殊的类,它可以用来定义一组常量。枚举类型是Java语言的关键字,用于定义枚举类型。枚举类型提供了一种方式,可以保证变量的值只能是预定义的常量集合中的一个。以下是枚举的一些基本特性和用法:
定义枚举:
枚举类型定义使用 enum
关键字
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
枚举声明
在zJava中,枚举(enum
)是一种特殊的类类型,它允许你定义一组固定的常量。以下是枚举的声明和一些相关的高级特性:
基本枚举声明
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
带属性的枚举
枚举可以有自己的属性,通过在枚举常量中定义构造函数参数来实现:
public enum Day {
SUNDAY("Sunday"), MONDAY("Monday"), TUESDAY("Tuesday"),
WEDNESDAY("Wednesday"), THURSDAY("Thursday"),
FRIDAY("Friday"), SATURDAY("Saturday");
private final String dayName;
private Day(String dayName) {
this.dayName = dayName;
}
public String getDayName() {
return dayName;
}
}
枚举方法
枚举可以有自己的方法,包括抽象方法:
public enum Operation {
PLUS {
public double apply(double x, double y) {
return x + y;
}
},
MINUS {
public double apply(double x, double y) {
return x - y;
}
};
// 抽象方法声明
public abstract double apply(double x, double y);
}
实现接口的枚举
枚举也可以实现接口:
public interface Colored {
String getColor();
}
public enum TrafficLight implements Colored {
RED("Red"), YELLOW("Yellow"), GREEN("Green");
private final String color;
TrafficLight(String color) {
this.color = color;
}
@Override
public String getColor() {
return color;
}
}
枚举构造函数
枚举的构造函数不能被声明为 public
或 protected
,它们隐式地是 private
的,并且只能由枚举本身调用:
public enum Season {
SPRING("Spring", 3),
SUMMER("Summer", 6),
AUTUMN("Autumn", 9),
WINTER("Winter", 12);
private final String seasonName;
private final int middleMonth;
Season(String seasonName, int middleMonth) {
this.seasonName = seasonName;
this.middleMonth = middleMonth;
}
// Getters
public String getSeasonName() {
return seasonName;
}
public int getMiddleMonth() {
return middleMonth;
}
}
枚举实例字段
枚举常量可以有自己的实例字段:
public enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6),
MARS(6.421e+23, 3.3972e6),
JUPITER(1.9e+27, 7.1492e7),
SATURN(5.688e+26, 6.0268e7),
URANUS(8.686e+25, 2.5559e7),
NEPTUNE(1.024e+26, 2.4746e7);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double getMass() {
return mass;
}
public double getRadius() {
return radius;
}
}
枚举的顺序
枚举常量声明的顺序也定义了它们迭代的顺序,可以通过 values()
方法获取:
for (Planet p : Planet.values()) {
System.out.println(p);
}
枚举提供了一种类型安全的方式来组织一组相关的常量,并且可以包含字段、方法和构造函数,使得它们比传统的整型常量更加强大和灵活。
标签:return,String,double,enum,枚举,public From: https://www.cnblogs.com/luoyiwen123/p/18347805