我说一堂课,说测试;其中有一个嵌套的静态类,例如TestParams。
TestParams仅包含一些引用Test类的String变量
我面临的问题是,在Test类的设置器中,我需要验证set参数是否为Params类中声明的参数之一。
该方案显示在下面的代码中:
public class Test {
protected String n;
protected int num;
public static class TestParams {
public static final String PARAM_N="n";
public static final String PARAM_NUM="num";
}
public void setParam(String key, Object value) {
// Need to check here the if key is defined in TestParams
// keep adding conditions to IF statement when more params added??
if(key.equals(TestParams.PARAM_N) || (key.equals(TestParams.PARAM_NUM))
// Do some stuff
}
}
有什么方法可以用多个条件替换IF语句? (例如,是否在TestParams()中输入了密钥,或者对于代码结构而言是否有其他设计?
最佳答案
为了解决您要询问的特定问题,除了使用反射,我没有其他方法:
private boolean isValidKey(String str) {
for (Field f : TestParams.class.getFields())
try {
if (f.get(null).equals(str))
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
尽管我强烈建议您重新考虑设计。