【问题标题】:Should I explicitly declare static methods in Java 8 interfaces as "public static" instead of "static" only? [closed]我应该将 Java 8 接口中的静态方法显式声明为“公共静态”而不是“静态”吗? [关闭]
【发布时间】:2017-01-04 13:57:24
【问题描述】:

查看 Java 8 API 中的一些接口(示例:Stream),我看到静态方法被声明为 public static,但默认方法和抽象方法不是。从技术的角度来看,如果我在接口的静态方法中省略 public,我会得到与 public 访问修饰符不同的东西吗?

【问题讨论】:

  • 更大的问题是它为什么会困扰你?
  • 可能是因为它们是从实用程序类 Streams 重构而来的,该实用程序类在 JDK 8 发布之前已从 JDK 8 中删除。
  • 我习惯于根据我在自己的 Java API 中阅读的内容编写代码,因为我相信当 Oracle 工程师说这是一种“不鼓励的做法”时,他们会遵循他们自己的建议。所以重点不在于它打扰我。我想从技术的角度知道,如果我在接口的静态方法中省略了 public,我得到了一些与 public 访问修饰符不同的东西。
  • 编辑问题以使其清楚。

标签: interface java-8 static-methods


【解决方案1】:

The Java 8 Language specification 明确指出:

接口主体中的每个方法声明都是隐式的 上市。这是允许的,但作为一种风格不鼓励, 为方法声明冗余地指定 public 修饰符 一个接口。

但是,有一个new feature coming with Java 9 支持私有接口方法。这些私有方法对于重用默认方法可以受益的代码块很有用。

所以我认为在 Java API 中使用 public 是对这种变化的预期,为了精确起见,使方法可见性变得明确。因此,即使 Java 8 不鼓励这样做,您也可以将其视为新的最佳实践。 进一步阅读here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-07
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多