当我将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值与常量名称不同。
如果我不覆盖方法的价值,它会尝试比较相同的常数值而不会发现相等。所以它打破了产品中的许多功能。
答案 0 :(得分:0)
除了&#34;这是一个非常糟糕的做法&#34;,只需删除&#34; Class enumType,&#34;也许?你永远不会使用它,方法会变得不同。
所以,查找和替换...&gt; &#34; Class<ActionStatus> enumType,
&#34; - &gt;&#34;&#34;
但您仍需要手动更改通话。但是,它们会被标记为错误。