获取类的所有静态变量而不进行反射

Ash*_*hok 4 java

我们有一个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)

我们正在考虑使用反射,但我在这个论坛上发帖只是为了检查是否有更好的解决方案.请提供解决此问题的建议.

fge*_*fge 6

也许你可以通过一个界面:

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().