У меня есть следующие объявления в Xcore:Вызов супер метод из эксплуатации Xcore
class ValueBase { ... }
class ValueArray extends ValueBase
{
int size
double [] values
String valueUnit
op boolean isValueEqual(Value v)
{
if (!(v instanceof IValueArray))
{
return false
}
val other = v as IValueArray;
return Iterables.elementsEqual(this.values, other.values);
}
op boolean equals(Value v)
{
return super.equals(v) && isValueEqual(v) &&
(v instanceof IValueArray) &&
Objects.equals(valueUnit, (v as IValueArray).valueUnit)
}
}
ValueBase
реализует свой собственный equals()
метод. В конкретном классе ValueArray
я хочу позвонить super.equals()
, чтобы сравнить общие поля базового класса, а затем выполнить сравнения, специфичные для конкретного класса.
Но Xcore жалуется на этот код, что он «Couldn't resolve reference to JvmIdentifiableElement super
».
Как я могу назвать метод equals()
из суперкласса?
Спасибо за ответ. Я также спросил Эд на форумах сообщества Eclipse, и он упомянул, что раньше было несколько ошибок, связанных с супер. И поскольку я использую более старую версию (поскольку целевая платформа моего клиента еще не обновлена), это может быть причиной. У меня не было времени для двойной проверки с новой версией, но я буду придерживаться теории ошибок до тех пор, пока не будет доказано обратное, и дайте вам кредит на ответ. В качестве обходного пути я реализовал супер-логику в каждом подклассе. Отстой, но что вы можете сделать ;-) –