java - 从 Constant.java 文件中获取所有字符串值对

标签 java string if-statement constants

我有一个现有的 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/

相关文章:

java - 如何在没有变量的情况下从枚举中获取值

php - 删除空数组元素

c - 我怎样才能只计算列表中的某些项目?

haskell - Haskell 中的控制语句?

java - 这个四元数旋转代码是如何工作的?

java - 如何将字节流图像数据放入JSON对象中?

java - 如何在 java 中创建将输入作为 JSONObject 的简单 Web 服务

php 只获取数组中的值

Java:寻找最快的方法来检查字符串是否存在特定范围内的 Unicode 字符

python - 我可以在 Python 中收到始终评估为 true 的警告吗?