关于java:java8允许公共默认方法的接口

java8 Interface allowing public default method

在Java 8中,默认方法实现可以同时使用EDCOX1、0和EDCOX1×1的修改器。下面两种方法的主要区别是什么?在哪种情况下需要遵循哪种类型。

1
2
3
4
5
6
7
default int makeMul(int x, int y) {
    return x * y;
}

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


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

来自JLS 9.4:

Every method declaration in the body of an interface is implicitly public (§6.6). It is permitted, but discouraged as a matter of style, to redundantly specify the public modifier for a method declaration in an interface.


如其他人所说,default关键字有两个主要用途:

  • 在Java 8之前,它只能用于在EDCOX1×1语句中触发默认情况。
  • 从Java 8开始,开发人员被允许在接口中提供实现的方法(以前是不可能的),在方法声明(EDCOX1 3)中使用EDCOX1×0个关键字。

据我所知,在一个简单的类中,在方法的声明中使用default关键字根本没有任何区别。

为了广泛讨论接口中EDCOX1和0种方法的用途,请参见Java 8中默认或防御方法的用途。