1
내가 개 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 Community Forums)에서 에드에게 물어 보았습니다. 그는 이전에 super와 관련된 몇 가지 버그가있었습니다. 그리고 이전 버전을 사용하고 있기 때문에 (내 고객의 대상 플랫폼이 아직 최신 버전이 아니기 때문에) 이것이 원인 일 수 있습니다. 나는 새 버전으로 다시 확인해야 할 시간이 없었지만, 달리 입증 될 때까지 버그 이론에 충실하게 답하고 그에 대한 크레딧을 줄 것입니다. 이 문제를 해결하기 위해 모든 하위 클래스에서 수퍼 로직을 구현했습니다. 엿 같은데, 뭘 할 수 있니 ;-) –