是否可以在 Android < API 24 中使用默认接口实现?

2022-09-03 00:53:08

Android Studio 2.3.3, Java 8

我为安卓4.0+创建安卓应用

在我的 app/build.gradle 中

...
minSdkVersion 15
targetSdkVersion 26

我想使用默认接口实现(来自Java 8)。所以我创建了 tnext 类:

public interface DefaultCallback {

    public default void onResponse(Call<T> var1, Response<T> var2) {

    }
}

但我得到编译错误:

默认方法所需的 API 级别 24(当前最小值为 15)

所以问题是:

我可以在 Android < API 24 上使用 deafult 接口实现吗?


答案 1

根据您的minSdk版本,您可能需要将以下内容添加到应用程序或模块的build.gradle文件中:

android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

有关更多详细信息,请参阅 https://developer.android.com/studio/write/java8-support.html#supported_features


答案 2

哈哈

默认方法需要 API 级别 24。

https://developer.android.com/guide/platform/j8-jack.html#supported-features

Android 不支持所有 Java 8 语言功能。但是,在开发面向 Android 7.0(API 级别 24)的应用时,可以使用以下功能:

  • 默认和静态接口方法
  • Lambda 表达式(也可用于 API 级别 23 及更低版本)
  • 可重复的注释
  • 方法参考(也可在 API 级别 23 及更低版本上使用)
  • 类型注释(在 API 级别 23 及更低级别上也可用)

推荐