如何重构枚举类的方法值?

时间:2015-03-24 08:09:57

标签: java eclipse enums

当我将java版本从1.6升级到1.7时,它开始在这个SO问题中提出这个问题 (Error: valueOf(Class<T>, String) of type Enum<E> but does not hide it) Upgrade version from jdk1.6 to jdk1.7

通过Altr + shift + r或右键单击方法 - >重构 - &gt;重命名,我只知道通过1种方法重构1种方法。 但是有超过100个方法枚举类具有valueOf方法。 也可以通过正则表达式。但我对此并不太了解 有没有人可以帮助我?

假设我有这个课程

public enum ActionStatus implements IsSerializable, Serializable {

    NOT_STARTED, STARTED;

    public String toString() {
        switch(this) {
            case NOT_STARTED: 
                return "Not Started";
            case STARTED: 
                return "In Progress";
        }

        return null;
    };
    public static ActionStatus valueOf(Class<ActionStatus> enumType, String value){ //I want to refactor this method

            if(value.equalsIgnoreCase(NOT_STARTED.toString()))
                return ActionStatus.NOT_STARTED;
            else if(value.equalsIgnoreCase(STARTED.toString()))
                return ActionStatus.STARTED;
            else 
                return null;
    }   
}

修改 它的toString值与常量名称不同。

  1. 在组合(UI小部件)中,它显示toString值。当用户选择该值时,它通过valueOf方法获得枚举常量,以便存储在数据库中。
  2. 某些地方用逗号分隔枚举值存储在数据库中,因此它在数据库中用逗号存储toString值。 获取后,将其拆分并返回其值并返回常量枚举列表并在代码函数中使用。
  3. 如果我不覆盖方法的价值,它会尝试比较相同的常数值而不会发现相等。所以它打破了产品中的许多功能。

1 个答案:

答案 0 :(得分:0)

除了&#34;这是一个非常糟糕的做法&#34;,只需删除&#34; Class enumType,&#34;也许?你永远不会使用它,方法会变得不同。

所以,查找和替换...&gt; &#34; Class<ActionStatus> enumType,&#34; - &gt;&#34;&#34;

但您仍需要手动更改通话。但是,它们会被标记为错误。