我有这些课
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),所以这是一个错误吗?
我可以使用
- 仿制药
- 将 setType 签名更改为
public void setType(UnitType type)
并检查 instanceof 内部 - 更改方法名称以避免覆盖
有没有真正的解决方案而不是解决方法?