使用java.beans.Introspector构造BeanInfo时出现异常

时间:2013-12-19 09:25:25

标签: java introspection

当尝试获取Introspector.getBeanInfo专门用于在子类中返回索引getter方法的类的类时,

java.beans.IntrospectionException抛出BeanInfo

示例代码:

import java.beans.*;

public class IntrospectorIssue {

    public static void main(String[] args) {
        try {
            final BeanInfo beanInfo = Introspector.getBeanInfo(TestClass.class);
        } catch (IntrospectionException e) {
            throw new RuntimeException(e);
        }
    }

    public static abstract class AbstractTestClass {

        public Number getValue(int i) {
            return null;
        }

        public void setValue(int i, Number value) {

        }
    }

    public static class TestClass extends AbstractTestClass {

        public Long getValue(int i) { // (1)
            return null;
        }

        public void setValue(int i, Number value) { //(2)

        }

    }
}

期望java.beans.IndexedPropertyDescriptor抛出异常 返回类型(1)Long应该等于(2)Number。

我正在使用1.7.0_45-b18 64位JDK

如果我将(1)的返回类型更改为Number,则不会抛出异常。 这似乎是JDK中的一个错误,我找到了类似的错误报告,并修复了java.beans.PropertyDescriptorhttp://hg.openjdk.java.net/jdk7u/jdk7u-dev/jdk/rev/ef26b6c8264d)。

在这里发帖只是为了仔细检查我是否遗漏了某些东西。

0 个答案:

没有答案