Единственный способ, которым я могу придумать, - это выбросить исключение в B
s equals
:
public abstract class B extends A {
@Override
public boolean equals(Object obj) {
throw new UnsupportedOperationException();
}
}
. Это обеспечит то, что подклассы B
, которые не смогут переопределить equals
не вернется к реализации A
equals
.
К сожалению, это приведет к исключениям времени выполнения, в отличие от ошибок времени компиляции, которые предпочтительнее.