【问题标题】:java8 Interface allowing public default methodjava8接口允许公共默认方法
【发布时间】:2016-09-06 09:07:43
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

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

来自JLS 9.4

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 2023-03-26
      • 2016-07-28
      • 2017-06-08
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多