我对PropertyUtils.getProperty(bean, fieldName)方法有一个奇怪的问题,我得到了java.lang.NoShuchMethodException

假设我们有一个名为pojo的简单Java类:

public class Pojo {
    public java.util.Date aDate;
    public java.util.Date theDate;

    public Pojo(){}
}

和一个调用者类
public class TestPojo{
    public static void main(String[] args){
        Pojo p = new Pojo();
        p.setADate(new Date());
        p.setTheDate(new Date());

        PropertyUtils.getProperty(p, "theDate");
        PropertyUtils.getProperty(p, "aDate");
    }
}

第一个PropertyUtils.getProperty调用工作正常,第二个调用throwNoSuchMethodExeption

我想知道我是否缺少一些愚蠢的东西,或者这确实是一个错误:)

最佳答案

我不了解PropertyUtils.getProperty(p, "TheDate");如何工作,因为属性名称不正确。

尝试这个:

public class TestPojo{
    public static void main(String[] args){
        Pojo p = new Pojo();
        p.setADate(new Date());
        p.setTheDate(new Date());

        PropertyUtils.getProperty(p, "theDate");
        PropertyUtils.getProperty(p, "aDate");
    }
}

链接到PropertyUtils method

为了解决您的问题,有两种解决方案:
  • 使用属性名称“ADate”代替
  • 将访问器的方法名称更改为getaDate()和setaDate(Date dateToSet)

  • 正如Xavi所说,这是reported bug

    关于java - 尝试获取简单属性值时,PropertyUtils.getProperty失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7529411/

    10-09 15:59