java 接口中的默认方法

default method in interfaces in java

我试图使用以下代码了解 Java 接口中的默认方法,但我无法编译它:

public interface A {
    default void foo(){
       System.out.println("Calling A.foo()");
    }
}

public class Clazz implements A {
}

class c
{
    public static void main(String[]args)
    {
        Clazz clazz = new Clazz();
        clazz.foo(); // Calling A.foo()
    }
}

编译器产生了以下输出:

c.java:2: error: illegal start of type
    default void foo(){
    ^
c.java:2: error: = expected
    default void foo(){
            ^
c.java:2: error: ';' expected
    default void foo(){
                ^
c.java:2: error: illegal start of type
    default void foo(){
                    ^
c.java:2: error:  expected
    default void foo(){
                     ^
c.java:2: error: = expected
    default void foo(){
                      ^
c.java:2: error: ';' expected
    default void foo(){
                       ^
c.java:3: error: illegal start of type
       System.out.println("Calling A.foo()");
             ^
c.java:3: error: = expected
       System.out.println("Calling A.foo()");
                 ^
c.java:3: error:  expected
       System.out.println("Calling A.foo()");
                         ^
c.java:3: error: illegal start of type
       System.out.println("Calling A.foo()");
                          ^
c.java:5: error: class, interface, or enum expected
       }

我无法理解这些错误。我怎样才能更正我的代码中的问题?

default 修饰符不适用于 java 早于 8 的版本,因此请确保您为源代码使用了正确的编译器。