java - 使用 BeanUtils 设置 setter 值

标签 java reflection apache-commons-beanutils

我尝试使用 setter 设置值,但出现 null。请帮助我解决这个问题,如果有其他更好的方法可以提供。

import org.apache.commons.beanutils.BeanUtils;

public class TestSetter {

    public static void main(String args[]) throws Exception
    {
        Test t = new Test();
        BeanUtils.setProperty(t,"te","teval");
        System.out.println("tevalue :"+t.getTe());
    }
}
class Test
{
    String te;

    public String getTe() {
        return te;
    }

    public void setTe(String te) {
        this.te = te;
    }

}

异常:

Exception in thread "main" java.lang.reflect.InvocationTargetException: Cannot set te
    at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1025)
    at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:313)
    at test.reflection.TestSetter.main(TestSetter.java:10)
Caused by: java.lang.NoSuchMethodException: Property 'te' has no setter method
    at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1746)
    at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
    at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
    at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
    ... 2 more

最佳答案

您的类 Test 应该是一个public 类,将 Test 移动到一个自己的文件中,使其公开并重新运行您的代码。

关于java - 使用 BeanUtils 设置 setter 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14867658/

相关文章:

C#:将原语动态转换为 Nullable<>

java - 如何使用 Apache Commons BeanUtils 设置日期类型值,

java - 方法作为带有签名合约的参数?

Java通过接口(interface)反射提取泛型类型参数

java - 如果字段名称不同,如何将 POJO 映射到 DTO

java - Bean 属性访问和注解

java - 在启动我的安装程序(java)之前检查 Windows 更新或任何安装程序实例是否正在运行

java - 导入 javax.servlet 时遇到问题

java - JAXB 接受重复标签

java - DLL 到 LIB - 无法使用 JNI 和 System.load 调用打开 LIB 文件