перекрыть и обратиться к нему же.
public interface ResultIterator<T> extends Iterator<T>, Closeable {
@Override
default void forEachRemaining(Consumer<? super T> action) {
try {
Iterator.super.forEachRemaining(action);
} finally {
close();
}
}
}
public class MyResultIterator<T> implements ResultIterator<T>{
//как сделать так?
@Override
void forEachRemaining(Consumer<? super T> action) {
Iterator.super.forEachRemaining(action);
}
}
переопределить close и проигнорировать его когда close вызывается напрямую из ResultIterator 🙂
а как я узнаю кто вызывает? не я ведь вызываю
https://docs.oracle.com/javase/9/docs/api/java/lang/StackWalker.html или new Throwable().getStackTrace()
ааа, не, такой бесовщиной я не буду заниматься, нужно что то простое
🙂 А наследоваться от Iterator не вариант? Просто как бы Барбара Лисков посмотрела бы на вас косо, если вы наследуетесь от ResultIterator, а поведение существенно меняется
Обсуждают сегодня