当前位置: 首页 > 知识库问答 >
问题:

错误:当不使用默认接口方法时,仅支持从牛轧糖(--min api 24)开始的默认接口方法

寿子轩
2023-03-14

编译libgdx游戏时,我从android studio收到以下错误:

Error: Default interface methods are only supported starting with 
Android N (--min-api 24): com.hgames.core.item.Item 
com.hgames.core.item.misc.MiscItem.deepClone()

我不明白,因为我不使用默认的接口方法。我的代码用JDK1编译得很好。7.此处报告的错误与以下代码有关:

interface Item {

   Item deepClone()

} 

interface MiscItem extends Item {

  @Override
  MiscItem deepClone()

}

这里没有默认方法。请注意,如果我删除此重写,并在调用站点向MiscItem添加强制转换,编译器报告将转到下一个错误(同类),因为我在许多地方使用了此模式。我使用gradle,并在我的build.gradle文件中包含以下内容:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

defaultConfig {
    minSdkVersion 9
    targetSdkVersion 15
    compileSdkVersion 15
    versionCode 1
}

我是Android Studio的新手,因为我通常使用Eclipse,但是我转到Android Studio把我的游戏移植到Android。所以也许我错过了一些愚蠢的东西,但是我在任何地方都找不到任何帮助。

共有1个答案

胡禄
2023-03-14

正如通用软件所提到的,在android{...}闭包中添加这个作为参考,以便您的应用模块解决问题build.gradle:

android {
...
  compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
...
}
 类似资料:
  • 我升级到了Android Studio3.1,却出现了以下错误: 仅支持从Android开始的默认接口方法N(--min-API 24):void Android.arch.Lifecycle.DefaultLifecycleObserver.onCreate(Android.arch.Lifecycle.LifecycleOwner) 消息{kind=错误,text=默认接口方法仅支持从Andr

  • 问题内容: 当搜寻通过Java语言规范来回答这个问题),我学到的是 在初始化类之前,必须先初始化其直接超类, 但不初始化由该类实现的接口。 同样,在初始化接口之前,不会初始化接口的超级接口。 出于我自己的好奇心,我尝试了一下,并且未如预期的那样对接口进行了初始化。 该程序打印 但是,如果接口声明了一个方法,则确实会发生初始化。考虑给定的接口 然后上面的相同程序将打印 换句话说,接口的字段已初始化(

  • 问题内容: 向所有Java专家致敬! 从Java8开始,我们可以在接口中使用默认实现(是的!)。但是,当您想从默认方法登录时会出现问题。 我有种感觉,每次我想在默认方法中记录某些内容时都调用.getLogger()是不明智的。 是的,可以在接口中定义静态变量-但这对于接口而言不是一个好习惯,而且+暴露了记录器(必须是公开的)。 我目前的解决方案: LogHolder仍然对所有人可见,这实际上没有任

  • 问题内容: 考虑以下情况, 在上面的例子中我得到以下输出这是 相当 期待。 我一直在阅读有关默认方法的信息, 尤其是 关于扩展包含默认方法的接口的信息 2 第二子弹:重新声明的默认方法,这使得它的抽象。 在上面的示例中,我有两个接口的默认方法具有相同的名称,并且当我实现这两个接口时,我只能实现对的引用。 我对此几乎没有疑问, 我怎样才能 到达 的方法 和 如果我不能比,为什么? 没有这种行为从本质

  • 我试图使用以下代码理解Java接口中的默认方法,但我无法编译它: 编译器生成了以下输出: 我无法理解这些错误。我如何更正代码中的问题?

  • 我想通过创建一个具体实现类的对象来执行接口中默认方法的定义体,该对象也覆盖了该方法。无论我是直接创建具体实现类的对象,还是通过动态绑定/多态,实现类中定义/重写的主体都只是得到执行。请看下面的代码 我想知道如何在控制台内部界面银行打印以下内容--loan()