
首先,新建一个Java工程:demo,新建枚举类Color,新建启动类hello,代码分别如下:
public enum Color {
RED,GREEN,BLUE;
}
import java.util.Arrays;
public class Hello {
public static void main(String[] args) {
Color c = Color.RED;
System.out.println(c);
System.out.println(Arrays.toString(Color.values()));
for(Color color:Color.values()){
System.out.println(color);
}
}
}
运行main,控制台打印如下信息:
RED [RED, GREEN, BLUE] RED GREEN BLUE
Color.values()将取得枚举类中的全部内容,返回的是一个对象数组。
新建枚举类Coupon,新建Hello,内容如下:
public enum Coupon {
MANJIAN("满减券","001"),
ZHEKOU("折扣券","002"),
LIJIAN("立减券","003");
private String description;
private String code;
private Coupon(String description,String code){
this.description = description;
this.code = code;
}
public String getDescription() {
return description;
}
public String getCode() {
return code;
}
}
public class Hello {
public static void main(String[] args) {
String code = Coupon.MANJIAN.getCode();
String desc = Coupon.MANJIAN.getDescription();
System.out.println(desc +"'s code is " + code);
}
}
运行main,控制台打印出如下信息:
满减券's code is 001实例3
在枚举类Coupon定义静态方法of,如下:
import java.util.Objects;
import java.util.stream.Stream;
public enum Coupon {
MANJIAN("满减券","001"),
ZHEKOU("折扣券","002"),
LIJIAN("立减券","003");
private String description;
private String code;
private Coupon(String description,String code){
this.description = description;
this.code = code;
}
public String getDescription() {
return description;
}
public String getCode() {
return code;
}
public static Coupon of(String code){
Objects.requireNonNull(code);
return Stream.of(values())
.filter(c -> c.code.equals(code))
.findAny()
.orElseThrow(() -> new IllegalArgumentException(code + " not exists"));
}
}
在main中调用Coupon.of("000"),如下:
public class Hello {
public static void main(String[] args) {
Coupon c = Coupon.of("000");
}
}
运行结果如下:
Exception in thread "main" java.lang.IllegalArgumentException: 000 not exists at Coupon.lambda$of$1(Coupon.java:31) at java.util.Optional.orElseThrow(Optional.java:290) at Coupon.of(Coupon.java:31) at Hello.main(Hello.java:3)
因为000不是枚举项,所以抛出异常“000 not exists"。
我们来试枚举类中存在的一个枚举项,如001,
public class Hello {
public static void main(String[] args) {
Coupon c = Coupon.of("001");
System.out.println(c.getCode());
System.out.println(c.getDescription());
}
}
运行main(),控制台打印出如下信息:
001 满减券参考文章
(Java)定义一个枚举类型
JAVA常量类的实现方式_枚举类_项目实践