5
为什么Java 8接口方法中不允许“最终”?
Java 8最有用的功能之一是default接口上的新方法。引入它们的原因基本上有两个(可能还有其他原因): 提供实际的默认实现。例:Iterator.remove() 允许JDK API演进。例:Iterable.forEach() 从API设计人员的角度来看,我希望能够在接口方法上使用其他修饰符,例如final。在添加便捷方法时,这将很有用,以防止在实现类时“意外”覆盖: interface Sender { // Convenience method to send an empty message default final void send() { send(null); } // Implementations should only implement this method void send(String message); } 如果Sender已经上过课,以上是已经很普遍的做法: abstract class Sender { // Convenience method to send an empty message final void …