在 Java 9 中,我们可以在接口内创建私有方法。接口允许我们声明有助于在非抽象方法之间共享公共代码的私有方法。
在 Java 9 之前,在接口内创建私有方法会导致编译时错误。以下示例使用 Java 8 编译器进行编译,并引发编译时错误。
interface Sayable{
default void say() { saySomething(); } // Private method inside interface private void saySomething() { System.out.println("Hello... I'm private method"); }
}
public class PrivateInterface implements Sayable {
public static void main(String[] args) { Sayable s = new PrivateInterface(); s.say(); }
}
输出:
PrivateInterface.java:6: error: modifier private not allowed here
注意:要实现私有接口方法,请仅使用 Java 9 或更高版本编译源代码。
现在,让我们使用 Java 9 执行以下代码。查看输出,它执行得很好。
interface Sayable{
default void say() { saySomething(); } // Private method inside interface private void saySomething() { System.out.println("Hello... I'm private method"); }
}
public class PrivateInterface implements Sayable {
public static void main(String[] args) { Sayable s = new PrivateInterface(); s.say(); }
}
输出:
Hello... I'm private method
例如,我们也可以在接口内创建私有静态方法。请看下面的例子。
interface Sayable{
default void say() { saySomething(); // Calling private method sayPolitely(); // Calling private static method } // Private method inside interface private void saySomething() { System.out.println("Hello... I'm private method"); } // Private static method inside interface private static void sayPolitely() { System.out.println("I'm private static method"); }
}
public class PrivateInterface implements Sayable {
public static void main(String[] args) { Sayable s = new PrivateInterface(); s.say(); }
}
输出:
Hello... I'm private method
I'm private static method