工具类-通用枚举

前言

封装通用枚举,减少每个枚举类中雷同的方法编写

一、编写枚举类

@Getter
@ToString
@AllArgsConstructor
public enum Area implements BaseEnum {
    CD("028", "成都"),
    BJ("010", "北京");
    private String name;
    private String code;
}
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum Human implements BaseEnum{
    MAN("1", "男性"),
    WOMEN("0", "女性");
    private String name;
    private String code;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class Optional {
    private String name;
    private String code;
}

二、编写通用接口

public interface BaseEnum {
    /**
     * 获取name值
     * @return
     */
    String getName();

    /**
     * 获取code值
     * @return
     */
    String getCode();

    /**
     * 根据code获取name
     * @param code
     * @param clazz
     * @return
     */
    static BaseEnum getNameByCode(String code, Class<? extends BaseEnum> clazz){
        BaseEnum baseEnum;
        BaseEnum[] enumConstants = clazz.getEnumConstants();
        String s = (enumConstants != null && enumConstants.length > 0) ? "aa" : null;
        baseEnum = (BaseEnum) TUtils.presentOrElseHandlData(s).presentOrElseHandlData(
                obj -> {
                    List<BaseEnum> enumList = Arrays.asList(enumConstants);
                    List<BaseEnum> list = enumList.stream().filter(a -> StringUtils.equals(a.getCode(), code)).collect(Collectors.toList());
                    String s1 = CollectionUtil.isNotEmpty(list) ? "aa" : null;
                    return TUtils.supplierHandle(s1).supplierHandle(
                            () -> list.get(0),
                            () -> {
                            }
                    );
                },
                obj -> null
        );
        return baseEnum ;
    }

    /**
     * 根据name获取code
     * @param name
     * @param clazz
     * @return
     */
    static BaseEnum getCodeByName(String name, Class<? extends BaseEnum> clazz){
        BaseEnum baseEnum;
        BaseEnum[] enumConstants = clazz.getEnumConstants();
        String s = (enumConstants != null && enumConstants.length > 0) ? "aa" : null;
        baseEnum = (BaseEnum) TUtils.presentOrElseHandlData(s).presentOrElseHandlData(
                obj -> {
                    List<BaseEnum> enumList = Arrays.asList(enumConstants);
                    List<BaseEnum> list = enumList.stream().filter(a -> StringUtils.equals(a.getName(), name)).collect(Collectors.toList());
                    String s1 = CollectionUtil.isNotEmpty(list) ? "aa" : null;
                    return TUtils.supplierHandle(s1).supplierHandle(
                            () -> list.get(0),
                            () -> {
                            }
                    );
                },
                obj -> null
        );
        return baseEnum ;
    }
    /**
     * 获取所有的
     */
    static List<Optional> getEnumConstants(Class<? extends BaseEnum> clazz){
        List<Optional> list;
        BaseEnum[] enumConstants = clazz.getEnumConstants();
        String s = (enumConstants != null && enumConstants.length > 0) ? "aa" : null;
        list = (List<Optional>) TUtils.presentOrElseHandlData(s).presentOrElseHandlData(
                obj -> {
                    List<BaseEnum> enumList = Arrays.asList(enumConstants);
                    List<Optional> optionalList = enumList.stream().map(a -> Optional.builder().code(a.getCode()).name(a.getName()).build()).collect(Collectors.toList());
                    return optionalList;
                },
                obj -> Lists.newArrayList()
        );
        return list ;
    }
}

三、编写测试类

public class Demo32 {

    public static void main(String[] args) {
        User user = new User();
        user.setName("lili").setAge(12).setAddr("成都");
        User user1 = new User().setName("lisi").setAge(11);
        System.out.println("user = " + user);
        System.out.println("user1 = " + user1);
        String str = "aa";
        TUtils.isTure(StringUtils.equals(str, "aaa")).throwMessage("测试111");
        TUtils.isTure(false).throwMessage("测试222");
        TUtils.isTrueOrFalse(true).isTrueOrFalse(
                () -> run1(),
                () -> run2()
        );
        Apple apple = new Apple(1, "jy", 1);
        TUtils.presentOrElseHandler(null).presentOrElseHandle(
                obj -> action(apple),
                () -> {
                    Demo32 demo32 = new Demo32();
                    demo32.run();
                }
        );
        Apple data = (Apple) TUtils.presentOrElseHandlData(null).presentOrElseHandlData(
                obj -> function1(apple),
                obj -> function2()
        );
        System.out.println("data = " + data);
        Apple o = (Apple) TUtils.supplierHandle(null).supplierHandle(
                () -> supplier(apple),
                () -> runn()
        );
        System.out.println(o);
    }


    public static void run1() {
        Apple apple = new Apple(1, "jy1", 1);
        System.out.println("apple = " + apple);
    }

    public static void run2() {
        Apple apple = new Apple(2, "jy2", 2);
        System.out.println("apple = " + apple);
    }

    public static void action(Apple apple) {
        apple.setArea("cd");
        System.out.println("apple = " + apple);
    }

    public void run() {
        System.out.println("没有对象,怎么办");
    }

    public static Apple function1(Apple apple) {
        apple.setArea("成都");
        System.out.println("apple = " + apple);
        return apple;
    }

    public static Apple function2() {
        return new Apple();
    }

    public static Apple supplier(Apple apple) {
        apple.setArea("简阳");
        return apple;
    }

    public static void runn() {
        System.out.println("没有对象,就没有办法了,只能返回个null");
    }
}

总结

记录下,其中有部分是工具类-if判断编写的判断工具类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值