8

Enum.valueOf()不能被另valueOf一种具体Enum类型的静态方法隐藏,但是由于我正在使用文本文件的反射创建对象,因此我需要一种通用的方法来调用valueOf.

目前我Enum有一个静态类fromString()

public enum Fruits {

   APPLE, ORANGE, ...;

    public static Fruit fromString(String fruit) {
        ...
    }
}

但是,当我处理枚举字段类型时,我如何接口这样的方法,我会调用适当的方法?我唯一能想到的是:

  • 使用标记界面
  • 为每个枚举实现这个静态方法
  • 通过反射调用静态方法

是否有另一种强制执行此限制的替代方案?

4

2 回答 2

2

如果我理解正确,您将拥有许多想要通过独特fromString方法集成的不同枚举。我所做的是创建一个单独的类,将所有枚举成员聚集到一个单独的类中,static final MapfromString根据它实现方法。

在我的例子中,所有枚举都实现了一个通用接口,因为我有许多自定义方法需要调用,而与所讨论的确切枚举无关。

于 2012-08-20T10:32:56.687 回答
-2

当然,它是内置的:使用Enum#valueOf(Class<T> enumType, String name).

于 2012-08-20T10:30:59.483 回答