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



我有一个对象,它有一个String字段。我可以通过调用来获取此字段

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

我设置了一个Field#set(Object)方法,用于设置该实例字段的值,但相应的getter似乎是Field#get(Object),这很奇怪,因为我本以为它是Field#get()

如何获取实例的strField的值?

如果使用java.lang.reflect.Field,则"setter"为Field.set(Object,Object),"getter"为Field.get(Object)。在这两种情况下,第一个参数是要访问字段的实例。

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

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));
    }
}

最简单的方法是使用BeanUtils:

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

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

相关内容

  • 没有找到相关文章

最新更新