私はこれらのクラスを持っています
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 を確認します - オーバーライドを避けるためにメソッド名を変更する
回避策ではなく、本当の解決策はありますか?