如何从Java反射中获取String字段的值?

时间:2013-06-27 02:30:30

标签: java reflection

我有一个具有String字段的对象。我可以通过以下方式获取此字段:

Field field = someObj.getClass().getField("strField");

我设置了Field#set(Object)方法,用于设置此实例的字段的值,但相应的getter似乎是Field#get(Object),这很奇怪,因为我原本期望它是{{1} }。

如何获取实例的Field#get()

的值

3 个答案:

答案 0 :(得分:7)

如果您使用java.lang.reflect.Field,则“设置者”为Field.set(Object,Object),“获取者”为Field.get(Object)。在两个情况下,第一个参数是您要访问该字段的实例。

答案 1 :(得分:2)

即使没有属性的getter或setter方法,也可以使用对象引用和Java Reflection来更改或获取值。

import java.lang.reflect.Field;

public class Bean {

    private String strField;

    public static void main(String[] args) throws Exception {
        Bean bean = new Bean();
        Field field = bean.getClass().getDeclaredField("strField");
        field.set(bean, "Hello");
        System.out.println(field.get(bean));
    }

}

答案 2 :(得分:1)

最简单的方法是使用BeanUtils

String s = BeanUtils.getProperty(someObj, "strField");

请注意,BeanUtils会尝试将您的属性转换为字符串。你需要有一个属性的getter和setter