java8接口允许公共默认方法

时间:2016-05-11 06:27:00

标签: java java-8 access-modifiers default-method

在java 8中,默认方法实现可以同时使用publicdefault修饰符。 以下两种方法的主要区别是什么?哪种类型的条件需要遵循。

default int makeMul(int x, int y) {
    return x * y;
}

public default int makeMul(int x, int y) {
    return x * y;
}

2 个答案:

答案 0 :(得分:9)

这里的默认方法没有什么特别之处。 Java总是允许将接口方法声明为public,即使它们已经隐式公开了。

来自JLS 9.4

  

接口主体中的每个方法声明都是隐式公共的(第6.6节)。允许但不鼓励作为样式,在接口中冗余地指定方法声明的公共修饰符。

答案 1 :(得分:2)

正如其他人所建议的那样,default关键字有两个主要用途:

  • 在Java 8之前,它只能用于在switch-case语句中触发默认情况。
  • 从Java 8开始,允许开发人员在接口内部提供已实现的方法(之前是不可能的),并在方法声明(default)中使用public default int method()关键字。

据我了解,在简单类中使用方法声明时使用default关键字,根本没有任何区别。

有关接口中default方法目的的广泛讨论,请参阅Purpose of Default or Defender methods in Java 8