根据Java中的字符串名称获取变量的值

时间:2018-07-04 12:47:49

标签: java

我正在研究一个Java应用程序,其中我需要读取一个String实例变量,并在遇到两个$符号之间的值(即$ sample $)时,将其替换为适当的值。

“样本”部分对应于我的代码中其他几个实例变量之一的名称,因此我需要做的是将“样本”提取为字符串,然后以某种方式使用它来获取实例的值变量称为样本。 除了使用哈希映射的一些预定义键,值对之外,还有什么方法可以做到?

1 个答案:

答案 0 :(得分:0)

您可以为此使用反射和辅助方法:

public static Object getFieldValue(Object target, String fieldName){
    // get field from class
    Field field = target.getClass().getDeclaredField(fieldName);

    // set accessability to "public"
    field.setAccessible(true);
    try{
        // get value
        return field.get(target);
    } catch(IllegalAccessException e){
        // or throw error
        throw new IllegalStateException(e);
    }
}

然后可以使用以下命令轻松调用它:

Object value = getFieldValue(this, "sample");

如@aszro在评论中所建议,该代码段使用Class#getDeclaredField(String)。此方法按名称返回该字段,如果不存在该字段,则抛出NoSuchElementException