【问题标题】:Format enum variables when they are called调用枚举变量时格式化它们
【发布时间】:2018-12-07 13:36:57
【问题描述】:

有没有办法在调用枚举变量时对其进行格式化?我的意思是,如果我有下一个枚举:

public enum Error{
IS_NULL("The variable {NAME_OF_VARIABLE} cannot be null.")
}

所以,当我调用它时,我想将 {NAME_OF_VARIABLE} 替换为 null 变量。例如:“变量 {phone_number} 为空。”

现在我使用下一个构造:

 enum Error{ 

    IS_NULL("The variable {%s} cannot be null.")

    public String errorMsg;
    }

    public String validatePhoneNumber(String phoneNumber){
    if(phoneNumber == null){
    return String.format(Error.IS_NULL.errorMsg, "phoneNumber")}
    return "OK"}
    }
}

它工作正常,但看起来有点乱。

谢谢!

【问题讨论】:

  • 变量没有被“调用”。
  • 感谢指正! :D 那么正确的表述是什么? :D

标签: java enums


【解决方案1】:

首先,您的代码无法编译,您可以使用三元运算符来检查 phoneNumber 是否为空。

给定枚举:

enum Error {

    IS_NULL("The variable {%s} cannot be null.");

    public String errorMsg;

    private Error(String errorMsg) {
        this.errorMsg = errorMsg;
    }

}

验证方法可以简化为

public static String validatePhoneNumber(String phoneNumber) {
  return phoneNumber == null ? String.format(Error.IS_NULL.errorMsg, "phoneNumber") : "OK";
}

【讨论】:

    【解决方案2】:

    使用Optional 更简洁的方式可能是:

    public String validatePhoneNumber(String phoneNumber) {
        return Optional.ofNullable(phoneNumber)
                .map(a -> String.format(Error.IS_NULL.getErrorMsg(), "phoneNumber"))
                .orElse("OK");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2014-09-20
      相关资源
      最近更新 更多