Java枚举类Enum的使用建议与MessageFormat的用法说明

在日常编码中少不了使用枚举类,可以避免大量的魔法值和重复使用的问题。
但是过多的枚举类也会导致查找起来的麻烦。因此个人建议使用内部类的方式,将大量的枚举都可以写在一个Class中,很爽,用过都说好。
本文提供一些简单的枚举类的使用代码范例。话不多说,先上代码。

import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Const {

    // 常用数字常量
    public final static String ONE_STR = "1";
    public final static Integer ONE_INT = 1;
    public final static String ZERO_STR = "0";
    public final static Integer ZERO_INT = 0;
    public final static Integer ONE_INT_MINUS = -1;
    public final static Double ZERO_DOU = 0D;
    public final static String ZERO_DOU_STR = "0.00";
    public final static Long ONE_LONG = 1L;

    // 常用字符常量
    public final static String SEMICOLON = ";";
    public final static String AND_SIGN = "&";
    public final static String EQUAL_SIGN = "=";
    // 转义后是 | 标志
    public final static String UPRIGHT = "\\|";

    // 常用常量
    public final static String SUCCESS = "success";
    public final static String SYS = "sys";
    public final static String FAIL = "fail";
    public final static String REFUND = "Refund";
    public final static String SET = "set";
    public final static String GET = "get";

	/**
     * 订单状态枚举
     */
    @AllArgsConstructor
    @Getter
    public enum OrderTypeMaps {
        COMMON(1, "正常单子"),
        REFUND(2, "退票单子"),
        CHANGE(3, "改签单子"),
        ;
        private Integer code;
        private String desc;
    }

	/**
     *支付类型、支付名称映射表
     */
    @AllArgsConstructor
    @Getter
    public enum PayTypeAndName {
        alipay("alipay", "支付宝"),
        wechatpay("wechat", "微信"),
        ;
        private String payType;
        private String accountName;
        public static PayTypeAndName getEnum(String accountName) {
            return Stream.of(PayTypeAndName.values())
                    .collect(Collectors.toMap(PayTypeAndName::getAccountName, Function.identity()))
                    .get(accountName);
        }
    }

	/**
     * 操作历史的操作内容模板
     * {@link java.text.MessageFormat#format(Object)}
     */
    @AllArgsConstructor
    @Getter
    public enum PushLogContent {
        NEW_RECORD_LOG("新增{0}记录"),
        ;
        private String content;
    }

另外的建议如代码所示,使用 lombok提供的一些注解,省事且快乐,爱了。
还可以编写一些静态方法,根据code值或者其他字段取出相应的枚举,采用了java8的流式写法,说到底也就是个循环,换汤不换药,不懂得铁子们可以直接复制粘贴哦。
最后还放了一个MessageFormat 类的方法,简单介绍一下,{0}是一个带下标的占位符,使用 MessageFormat.format(str,param…) 方法可以将字符串中的占位符替换为后续参数,与String.format功能相似,但是效率更好一些。但是该方法会有精度丢失的问题,尽量不要将Long类型的值存入,无论是否是字符串,与其底层有关

public void messageFormat() {
    String string = String.format("name=%s, age=%d", "huhx", 25);
    String message = MessageFormat.format("name={1}, age={0}, {1}", 25, "huhx");
    System.out.println(string);
    System.out.println(message);
  }
// name=huhx, age=25
// name=huhx, age=25, huhx

留言:老婆做了一个小红书账号,全是瓷砖方面的干货,大佬们如果有需求或者有兴趣可以移步了解一下,嘻嘻~

小红书地址,GO GO GO!!!
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值