我有基本接口:

public interface Doable {
    void doAction(String str);
}

我有扩展接口:
public interface DoubleDoable extends Doable{
  @Override
  default void doAction(String str) {
      doOnce();
      doOnce();
  }

  void doOnce();
}

我有一个实现:
public class Action implements DoubleDoable {
    public void doOnce() {
      System.out.println(123);
    }
}

但是,它没有编译为:Error:(10, 8) java: Action is not abstract and does not override abstract method doAction(java.lang.String) in Doable
难道我做错了什么?

最佳答案

如果使用的是Java 8编译器,则代码导致编译错误的唯一方法是,将传递给编译器的-source标志的值设置为1.7或更低。

就像是:

javac -source 1.7 ...

如果您使用的是maven,则下面的属性设置将具有相同的效果。
<maven.compiler.source>1.7</maven.compiler.source>

07-26 03:08