目前正在使用类似于 dectype 的形式实现自定义的 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");
}
但 dectype 不允许重写方法。这是基本限制,还是还没有人做过(可能因为 Clojure 早在 Java 8 中的默认方法之前出现)?无论如何,作为一个致力于拥抱宿主的编程语言,这对于使用/集成 Java 接口非常有用。