我们有一个A类异常,其中一些故障代码定义为public static final
,它在我们的源代码中被许多文件(超过100个)引用。
我们想要B类中的所有这些故障代码进行一些处理。
目前,我们在A类中实现了一个名为getFaultCodes()
的方法来构建故障代码列表并返回相同的代码。这种方法的问题在于,无论何时引入故障代码,都必须在getFaultCode
方法中添加。这很容易出错,因为用户可能忘记将新代码添加到方法中。
在enum
下移动这些错误代码需要更改源代码中的许多文件,因此我们不希望这样做。
class ExceptionA {
public static final String faultCode1 = "CODE1";
public static final String faultCode2 = "CODE1";
public static final String faultCode3 = "CODE1";
List<String> getFaultCodes(){
list.add(faultCode1);
......
return list;
}
}
我们正在考虑使用反射,但我在这个论坛上发帖只是为了检查是否有更好的解决方案。请提供解决此问题的建议。
答案 0 :(得分:6)
也许你可以通过一个界面:
public interface FaultCodeProvider
{
String getFaultCode();
}
然后让你的枚举实现它:
public enum DefaultFaultCodes
implements FaultCodeProvider
{
FAULT1("text for fault 1"),
// etc
;
private final String value;
DefaultFaultCodes(final String value)
{
this.value = value;
}
@Override
public String getFaultCode()
{
return value;
}
}
从枚举中收集它们就像在枚举values()
中循环一样简单。
答案 1 :(得分:0)
我修改了以下代码:
class ExceptionA {
public enum codes {
CODE1("CODE1"),
CODE2("CODE2"),
CODE3("CODE3"),
private String code;
codes(String code){
this.code = code;
}
public String getCode() {
return this.code;
}
}
public static final String faultCode1 = code.CODE1;
public static final String faultCode2 = code.CODE2;
public static final String faultCode3 = code.CODE3;
}
这样我就不需要改变变量的出现次数&#34; faultCode&#34;在源代码中,我可以访问其他类的故障代码列表。