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

7

Java 9允许我们在接口中拥有private方法,这意味着不必显式标记public方法不再是多余的。

然而,现在是否有必要这样做?我希望规范仍然将public abstract作为默认修饰符,以保持向后兼容性和之前的源代码一致性。

2个回答

13
Java 9语言规范 §9.4 表示: 在接口的方法中,可以声明publicprivate (§6.6)。如果没有给出访问修饰符,则该方法隐式地是public。允许但不建议在一个接口方法声明中冗余地指定public修饰符,这是一种风格上的问题。
遗憾的是,我找不到一个链接,不会导致PDF文档(对比旧版和新版JLS)

2

我所学到的:

接口中的所有成员都是隐式公共的,不能使用其他访问修饰符进行声明,除非在下面特别指定:

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

来源:Tim Buschalka 的 Learn Programming Academy

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接