我有一个现有的 Constant.java
使用它我必须编写一个逻辑,以便如果输入字符串包含任何常量字符串然后做一些事情。
public class Constants {
public static final String CONSTANT_ONE = "VALUE_CONSTANT_ONE";
public static final String CONSTANT_TWO = "VALUE_CONSTANT_TWO";
//and so on..
}
Validate.checkPhrase()
是一个 boolean 方法,它接受输入字符串和常量字符串作为参数,将它们转换为小写并将输出传递给 java.lang.String.contains()
验证方法。
在我的主要逻辑中,我在多个条件下使用 if
if (Validate.checkPhrase(str,CONSTANT_ONE)
|| Validate.checkPhrase(str,CONSTANT_TWO)|| /* multiple checks */ ){
//do something
}
每次添加新常量时,我都必须手动将其添加到 if 条件
中。
有没有一种方法可以从 Constant.java
中获取所有字符串、值对并在我的逻辑中使用它。
最佳答案
要获取所有常量,您可以使用以下代码 -
HashMap<String,String> pairs= new HashMap<String,String>();
Constants constants= new Constants();
Field[] f = constants.getClass().getFields();
for (int i = 0; i < f.length; i++) {
pairs.put(f[i].getName().toLowerCase(),f[i].get(constants).toString());
}
System.out.println(pairs);
更新 -
此外,由于所有字段都是静态的,我们可以使用类名访问它 -
HashMap<String,String> pairs= new HashMap<String,String>();
for(Field field :Constants.class.getFields())
{
pairs.put(field.getName().toLowerCase(),field.get(null).toString());
}
System.out.println(pairs);
map 输出-
{constant_two=VALUE_CONSTANT_TWO, constant_one=VALUE_CONSTANT_ONE}
关于java - 从 Constant.java 文件中获取所有字符串值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24630969/