使用java.beans.Introspector构建BeanInfo时发生异常
使用java.beans.Introspector构建BeanInfo时发生异常,java,introspection,Java,Introspection,Introspector.getBeanInfo在尝试获取子类中专门返回索引getter方法类型的类的BeanInfo时,抛出java.beans.IntrospectionException 示例代码: import java.beans.*; public class IntrospectorIssue { public static void main(String[] args) { try { final BeanInfo beanI
Introspector.getBeanInfo
在尝试获取子类中专门返回索引getter方法类型的类的BeanInfo
时,抛出java.beans.IntrospectionException
示例代码:
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中的一个bug,我发现了类似的bug报告,并修复了java.beans.PropertyDescriptor
()
张贴在这里只是为了再次检查,如果我没有错过什么