Java 8的默认方法试图尝试更进一步简化Java API。不幸的是,这一最近的语言扩展带来了一系列复杂的规则,但只有少部分Java开发者意识到这一点。这篇文章告诉你为什么引入默认方法会破坏你的(用户的)代码。
起初看来,默认方法给Java虚拟机的指令集带来了很多新的特性。最终,开发库的人能够在不带来客户端代码的兼容性问题的情况下,升级API。使用默认方法,任何实现库接口的类都自动适应接口引入的默认方法。一旦用户更新了他实现的类,就能够很简单使用更有意义的方法来覆盖原有默认方法。更好的是,用户可以在覆盖方法时候,调用接口的默认实现,同时增加业务逻辑。