我有基本接口:
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>