Java需要实现默认方法

时间:2017-11-11 11:25:58

标签: java interface java-8

我有Base界面:

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

我做错了吗?

2 个答案:

答案 0 :(得分:2)

如果您正在使用Java 8编译器,那么代码导致编译错误的唯一方法是将传递给编译器的-source标志的值设置为{{1或者更低。

类似的东西:

1.7

如果你正在使用maven,下面的属性设置将具有相同的效果。

javac -source 1.7 ...

答案 1 :(得分:0)

您无法调用方法do,因为它是java保留字。您可以找到所有Java关键字列表here