我试图使用以下代码理解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 }
我无法理解这些错误。如何更正代码中的问题?
答案 0 :(得分:1)
default
修饰符不适用于8岁以上的java版本,因此请确保您使用正确的编译器作为源代码。