【问题标题】:What is benefit from using fromValue function instead of valueOf, java enums?使用 fromValue 函数而不是 valueOf、java 枚举有什么好处?
【发布时间】:2017-09-04 12:41:28
【问题描述】:

我看到一些程序员在枚举结构中使用名为 fromValue 的函数。如果我们可以使用 valueOf,它的目的是什么?例如,我发现了这样的东西:

public static FooEnum fromValue(String v) {  
    return valueOf(v);  
}

【问题讨论】:

  • 如果实现是这样的,那么我们只能猜测 - 我的猜测是它应该更具可读性(我并不是说它是这样)。
  • 是的,我从没见过这个,我不明白。
  • 谢谢,我是编程新手,所以对此感到困惑。
  • 可读性也可以通过标准化来提高。也许这个团队同意始终使用上述签名从字符串中获取枚举,以使其在有错误处理或值映射的复杂情况和简单情况(如上)中统一。

标签: java enums value-of


【解决方案1】:

考虑一个枚举,其字符串属性的值与枚举的名称不同。

public enum FooEnum {
   A("foo"),
   B("bar"),
   ;
  ...
 }

那么您需要这样一种方法来查找属性值。 另见answer

【讨论】:

  • 我知道了,但我很感兴趣它是否有更深层次的含义。我的意思是编码约定、可读性等。
  • 啊,好吧。我们像@daniu 提到的那样使用它来处理无效值并引发表示开发人员失败的异常。所以它更像是一个内部条件约定。
【解决方案2】:

你可能有一个无效的字符串值:

public static FooEnum fromValue(String v) {
    try {
        return valueOf(v);
    } catch (InvalidArgumentException e) {
        return FooEnum.UNKNOWN;
    }
}

【讨论】:

  • 谢谢,现在很清楚了。这意味着所提出的方法“fromValue”是没有意义的或出于可读性目的而添加的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多