使用 fromValue 函数而不是 valueOf, java 枚举有什么好处?

What is benefit from using fromValue function instead of valueOf, java enums?

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

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

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

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

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

您的字符串值可能无效:

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