Java8新特性第2章(接口默认方法)

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java8新特性第2章(接口默认方法)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

转载请注明出处:https://zhuanlan.zhihu.com/p/20540188


在Java中一个接口一旦发布就已经被定型,除非我们能够一次性的更新所有该接口的实现,否者在接口的添加新方法将会破坏现有接口的实现。默认方法就是为了解决这一问题的,这样接口在发布之后依然能够继续演化。

默认方法就是向接口增加新的行为。它是一种新的方法:接口方法可以是抽象的或者是默认的。默认方法拥有默认实现,接口实现类通过继承得到该默认实现。默认方法不是抽象的,所以我们可以放心的向函数式接口里增加默认方法,而不用担心函数式接口单抽象方法的限制。

public interface Iterator<E> {      boolean hasNext();      E next();      default void remove() {         throw new UnsupportedOperationException("remove");     }      default void forEachRemaining(Consumer<? super E> action) {         Objects.requireNonNull(action);         while (hasNext())             action.accept(next());     } }

和其他方法一样,默认方法也可以被继承。

除了上面看到的默认方法,Java8中还允许我们在接口中定义静态方法。这使得我们可以从接口中直接调用它相关的辅助方法,而不是从其它的辅助类中调用(如Collections)。在做集合中元素比较的时候,我们一般需要使用静态辅助方法生成实现Comparator的比较器,在Java8中我们可以直接把该静态方法定义在Comparator接口中:

public static <T, U extends Comparable<? super U>>     Comparator<T> comparing(Function<T, U> keyExtractor) {     return (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2)); }

如果大家喜欢这一系列文章,欢迎关注我的知乎专栏、GitHub、简书博客。

脚本宝典总结

以上是脚本宝典为你收集整理的Java8新特性第2章(接口默认方法)全部内容,希望文章能够帮你解决Java8新特性第2章(接口默认方法)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。