枚举类的values()方法

109 阅读1分钟

枚举类的values()方法可以将枚举类中所有数据放在一个数组中返回,结合Arrays.stream()就能很方便的对它进行各种操作了。

应用举例:

在枚举类中定义一个静态方法,传递一个code参数,获得code对应的描述信息。

/*
* 订单状态枚举
*/
@Getter
@ToString
@AllArgsConstructor
public enum OrderStatusEnum{
    success(0,"已收货"),
    backing(1,"退货中"),
    back_success(2,"退货成功"),
    cancel(3,"取消订单");

    private Integer code;
    private String desc;
    
    //通过code获取对应的desc
    public static String getDescByCode(int code){
        Optional<String> first = Arrays
                .stream(values())
                .filter(orderStatusEnum -> orderStatusEnum.getCode().equals(code))
                .map(OrderStatusEnum::getDesc)
                .findFirst();
        if(!first.isPresent()){
            return null;
        }
        return first.get();
    }
}

测试

@Test
void testEnumValues(){
    String desc = OrderStatusEnum.getDescByCode(2);
    System.out.println(desc); // 退货成功
}