java中接口的默认方法

时间:2015-04-06 16:28:17

标签: java interface default

我试图使用以下代码理解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
       }

我无法理解这些错误。如何更正代码中的问题?

1 个答案:

答案 0 :(得分:1)

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