у меня есть эти классы
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 внутри - изменить имя метода, чтобы избежать переопределения
есть ли РЕАЛЬНОЕ решение вместо обходных путей?