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.PropertyDescriptor
(http://hg.openjdk.java.net/jdk7u/jdk7u-dev/jdk/rev/ef26b6c8264d)。
在这里发帖只是为了仔细检查我是否遗漏了某些东西。