Jsf 2 EL和协变返回类型
我有这些课程Jsf 2 EL和协变返回类型,jsf-2,el,covariance,Jsf 2,El,Covariance,我有这些课程 public abstract class Unit { public abstract UnitType getType(); ... } public class Item extends Unit { protected ItemType type; @Override public ItemType getType() { return type; } public void setTy
public abstract class Unit
{
public abstract UnitType getType();
...
}
public class Item extends Unit
{
protected ItemType type;
@Override
public ItemType getType()
{
return type;
}
public void setType(ItemType type)
{
this.type = type;
}
...
}
而且显然ItemType
扩展了UnitType
我得到:
javax.el.PropertyNotWritableException: /WEB-INF/facelets/general.xhtml @23,165 value="#{bean.item.type}": The class 'com.example.Item' does not have a writable property 'type'.
我可以理解协变返回类型会混淆EL(2.2),所以这是一个bug吗
我可以使用
公共无效setType(UnitType类型)
,并检查instanceof INDER有没有真正的解决方案而不是变通办法?看起来像是
java.beans。内省者负责。Java中有很多相关的bug:
, , . 由于合成桥方法,协变返回类型和泛型存在问题。对于一些Java 7更新(45、51、67、71),问题不是以正确的方式表现出来的,而是在运行服务器一段时间之后——这可能与内省和相关类中的软引用/弱引用缓存有关
所有这些问题似乎都在Java 1.7.0_80中得到了解决(使用Mojarra 2.2.8和Wildfly 8.2.0.Final进行了测试)。可能与