![](/img/trans.png)
[英]Default method in interface in Java 8 and Bean Info Introspector
[英]Introspector getBeanInfo on bean with generic implemented method
今天是个好日子。 我正在使用Vaadin,BeanItemContainer出现问题。 我有一个通用接口和一个实现该接口的bean
package ru.package.testpackage;
public class SomeTest {
interface SomeHavingId<T> {
T getId();
void setId(T id);
}
class TestBean implements SomeHavingId<Integer> {
public TestBean(Integer id) {
this.id = id;
}
@Override
public Integer getId() {
return id;
}
@Override
public void setId(Integer id) {
this.id = id;
}
private Integer id;
}
}
问题是BeanItemContainer
中的Vaadin使用Introspector.getBeanInfo(TestBean.class)
解析设置程序和获取程序以创建属性映射。 但是,而不是解析一个Integer getId()
我得到了java.lang.Object getId()
。 据我所知,Introspector无法理解以SomeHavingId<Integer>
方式实现的接口。
这就是我的问题-在以下情况下,我应该怎么做才能获得正确的方法签名:
不幸的是,问题仍然可以在JRE7中发生,但无法重现。 如果结果正确与否,则取决于方法“ Method [] java.lang.Class.getMethods()”返回的方法的顺序。
此方法的javadoc说:“ ...返回的数组中的元素未排序,并且没有任何特定的顺序...”,但是内省者使用该顺序来创建属性描述符。 因此,可能会返回错误的属性描述符。
我遇到了这个问题,但是找不到解决方案,甚至找不到重现的方法,因为这种情况很少发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.