目前正在使用类似于如下deftype表单实现自定义 java.util.Iterator
:
(deftype MyIterator []
Iterator
(hasNext [this]
(my-custom-code))
(next [this]
(my-custom-code))
)
但我希望覆盖Iterator
上的默认forEachRemaining
方法
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
... 使用更高效/专业化的实现。也许我甚至想实现默认未实现的方法remove
default void remove() {
throw new UnsupportedOperationException("remove");
}
但deftype不允许覆写方法。这是基本限制,还是尚未实现(可能因为Clojure在Java 8的默认方法之前出现)?无论如何,作为一个拥抱宿主的编程语言,这将对于使用/集成的Java接口非常有用。