PropertyUtils.isReadable()使用出现的bug

来源:互联网 发布:瓷砖平面设计软件 编辑:程序博客网 时间:2024/06/08 07:12

今天做excel 下载的时候 用到了PropertyUtils.isReadable()这个方法;

https://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/PropertyUtils.html

下面的和链接里面说的一样

public static boolean  isReadable(Object  bean,                                  String  name)true如果指定的属性名称标识指定bean上的可读属性,则返回; 否则返回 false。详情请参阅PropertyUtilsBean。参数:bean - 要检查的豆(可能是一个 DynaBeanname - 待评估的物业名称返回:true 如果属性可读,否则 false抛出:IllegalArgumentException- 如果bean 还是name现在null以来:BeanUtils 1.6也可以看看:PropertyUtilsBean.isReadable(java.lang.Object, java.lang.String)

我在使用时出现了一个问题

 private <T> Map<String, String> getPropertyMap(T t) {        Map<String, String> propertyMap = new HashMap<String, String>();        for (Field f : t.getClass().getDeclaredFields()) {            System.out.println(f.getName());            if (!**PropertyUtils.isReadable(t, f.getName())**) {                continue;            }            Title tt = f.getAnnotation(Title.class);            if (null == tt) {                continue;            }            propertyMap.put(tt.value(), f.getName());        }        return propertyMap;    }

PropertyUtils.isReadable(t, f.getName())
调用这个方法是出现了一个问题; 我通过反射获得model类变量里有三个Long 值

  /**     * 预算金额     */    @Title("预算金额")    @Getter    @Setter    private long yAmount;    /**     * 列支金额     */    @Title("列支金额")    @Getter    @Setter    private long lAmount;    /**     * 预算余额     */    @Title("预算余额")    @Getter    @Setter    private long amount;

然而 当yAmount和lAmount值进入isReadable方法时会进入 continue;而amount则不会;
在找寻源码解决时也没能解决;
最后的解决方式将原有的

  /**     * 预算金额     */    @Title("预算金额")    @Getter    @Setter    private long yCountAmount;    /**     * 列支金额     */    @Title("列支金额")    @Getter    @Setter    private long lCountAmount;

两个变量加长 然后就可以正常使用了;
耗费了一下午 也没弄清楚为什么;

———-编辑8/23
今天下载的时候又没出来;
然后把他们首字母大写后发现也可以

/**     * 预算金额     */    @Title("预算金额")    @Getter    @Setter    private long YAmount;    /**     * 列支金额     */    @Title("列支金额")    @Getter    @Setter    private long LAmount;
原创粉丝点击