规则枚举
一些简单的猜想实现,用来去除ifelse或者switch,虽然在jdk17中已经引入了新的switch语法,但是还是想做一些尝试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| package com.tthk.inland.ticket.core.enums.czloworder;
import lombok.AllArgsConstructor; import lombok.Getter;
import java.util.Arrays;
@Getter @AllArgsConstructor public enum LowOrderEnums { UNLIMITED("枚举1"){ @Override public boolean check(Integer id) { return id<1; } }, ENUM2("枚举2"){ @Override public boolean check(Integer id) { return id >= 1 && id < 3; } }, ENUM3("枚举3"){ @Override public boolean check(Integer id) { return id > 3; } }; private String name;
public abstract boolean check(Integer id);
public static String getEnums(Integer id){ return Arrays.stream(LowOrderEnums.values()).filter(x -> x.check(id)).findFirst().map(LowOrderEnums::getName).orElse(id+""); }
public static void main(String[] args) { System.out.println(getEnums(1)); System.out.println(getEnums(2)); System.out.println(getEnums(3)); System.out.println(getEnums(4)); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package com.tthk.inland.ticket.core.enums.czloworder;
import lombok.AllArgsConstructor; import lombok.Getter;
import java.util.Arrays; import java.util.function.Predicate;
@Getter @AllArgsConstructor public enum LowOrderEnums { UNLIMITED(x -> x < 1,"枚举1"), ENUM2(x -> x >= 1 && x < 3,"枚举2"), ENUM3(x -> x > 3,"枚举3"); private Predicate<Integer> accumulator;
private String name;
public static String getEnums(Integer id){ return Arrays.stream(LowOrderEnums.values()).filter(x -> x.getAccumulator().test(id)).findFirst().map(LowOrderEnums::getName).orElse("没匹配到"); }
public static void main(String[] args) { System.out.println(getEnums(1)); System.out.println(getEnums(2)); System.out.println(getEnums(3)); System.out.println(getEnums(4)); } }
|