我们有一个A类异常,其中定义了一些故障代码,public static final并在我们的源代码中引用了很多文件(超过100个).我们想要B类中的所有这些故障代码进行一些处理.
目前,我们已经实现了一个getFaultCodes()在A类中调用的方法来构建故障代码列表并返回相同的代码.这种方法的问题在于,无论何时引入故障代码,都必须在getFaultCode方法中添加.这很容易出错,因为用户可能忘记将新代码添加到方法中.
在a下移动这些故障代码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;
}
}
Run Code Online (Sandbox Code Playgroud)
我们正在考虑使用反射,但我在这个论坛上发帖只是为了检查是否有更好的解决方案.请提供解决此问题的建议.
也许你可以通过一个界面:
public interface FaultCodeProvider
{
String getFaultCode();
}
Run Code Online (Sandbox Code Playgroud)
然后让你的枚举实现它:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后从枚举中收集它们就像在枚举中循环一样容易values().
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |