Java 9中接口方法的默认访问修饰符?

时间:2017-08-08 17:06:28

标签: java interface java-9

Java 9允许我们在接口中使用private方法,这意味着不明确标记public方法不再是多余的。

但是,现在必须这样做吗?我希望规范仍假定public abstract作为维护与早期源代码向后兼容的方法的默认修饰符?

2 个答案:

答案 0 :(得分:8)

Java 9语言规范在§9.4::

中说
  

接口主体中的方法可以声明为publicprivate(第6.6节)。如果未给出访问修饰符,则该方法隐式public。允许但不鼓励作为样式,为接口中的方法声明冗余指定public修饰符。

很遗憾,我找不到不会导致a PDF, diffing the old and new JLS的链接。

答案 1 :(得分:1)

我学到了什么:

接口中的所有成员都是隐式公开的,不能声明 与任何其他访问修饰符,除非在下面指定:

  • 字段和所有变量都是 public static final 隐式
  • 使用“default”修饰符声明的方法签名、默认方法(自 Java 8 起允许)。
  • 静态方法(从 Java 8 开始允许)
  • 私有方法(从 Java 9 开始允许)静态和非静态具体方法都可以是私有的。
  • 嵌套类型。
  • 方法主体仅存在于默认、私有和静态方法中。

来源:Tim Buschalka 的学习编程学院

还有一个非常清晰但有点长的解释:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html