Вы не можете вернуть IOrd<T>
в методе, который возвращает T
.Вы должны изменить свою подпись:
public abstract Boolean lessEqualThan(final IOrd<T> y);
public default IOrd<T> min(final IOrd<T> y) {
if(lessEqualThan(y)) return this;
else return y;
}
Если вы хотите вернуть T
, вы должны предоставить способ получить значение T
из вашего класса реализации:
public abstract Boolean lessEqualThan(final T y);
T getTValue(); // Your implementation must provide a way to get the T value
public default T min(final T y) {
if(lessEqualThan(y)) return getTValue();
else return y;
}