目前正在使用与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接口非常有用。