首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java需要实现默认方法

Java需要实现默认方法
EN

Stack Overflow用户
提问于 2017-11-11 11:25:57
回答 2查看 97关注 0票数 4

我有基本接口:

代码语言:javascript
复制
public interface Doable {
    void doAction(String str);
}

我有扩展接口:

代码语言:javascript
复制
public interface DoubleDoable extends Doable{
  @Override 
  default void doAction(String str) {
      doOnce();
      doOnce();
  }

  void doOnce();
}

我有一个实现:

代码语言:javascript
复制
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

我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-11 11:52:07

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

类似于:

代码语言:javascript
复制
javac -source 1.7 ...

如果您使用的是maven,下面的属性设置将产生同样的效果。

代码语言:javascript
复制
<maven.compiler.source>1.7</maven.compiler.source>
票数 2
EN

Stack Overflow用户

发布于 2017-11-11 11:30:50

您不能调用方法do,因为它是java保留字。所有的Java关键字列表都可以找到这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47237372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档