【问题标题】:Java default Interface MethodsJava 默认接口方法
【发布时间】:2014-10-23 19:46:03
【问题描述】:

这是我的 Java 教程中的简单代码。

public interface AnimalIntf {

    default public String identifyMyself(){
        return "I am an animal.";
    }

}

我得到一个错误:类型接口方法的非法开始不能有主体。 该方法是默认的,默认关键字用于方法签名的开头。 你能向我解释什么是错的吗?

【问题讨论】:

  • 你用的是什么JDK版本?
  • @Jeffrey Bosboom,JDK 1.6
  • 您需要 JDK 8 才能使用默认方法。
  • 令人惊讶的是,您似乎是第一个提出这个问题的人(或者也许 SO 搜索太没用了,找不到重复项)。
  • 好吧,Oracle 的教程是这样写的 on the start page:“Java 教程主要描述 Java SE 8 中的功能。为了获得最佳效果,download JDK 8

标签: java interface java-8 default-method


【解决方案1】:

Java 8 中引入了默认接口方法,因此您需要一个支持 Java 8 或更高版本的 JDK。

【讨论】:

    【解决方案2】:

    您必须使用 Java 8 或更高版本才能在接口中具有默认实现。相反,您可以使用抽象类。但即便如此,您也不会使用 default 关键字。

    【讨论】:

    【解决方案3】:

    奇怪的事情正在发生... 在计算机上和 IDE 设置中将 JDK 更新到版本 8 后,代码编译正常,但 IDE 仍然标记该行

    default public String identifyMyself(){
    

    作为错误。并且在尝试使用接口时仍然出现错误,要求覆盖实现该接口的类中的默认方法。

    public class Dragon implements Animal{    
    }
    

    2 小时后,我厌倦了尝试修复 NetBeans v.6.9.1 并下载了 NetBeans v8.0.1。 现在我很好:)

    【讨论】:

      猜你喜欢
      • 2019-11-14
      • 2017-09-25
      • 1970-01-01
      • 2018-06-13
      • 2018-01-28
      • 2011-04-18
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      相关资源
      最近更新 更多