【问题标题】:Is default methods are supported in AIDL (Android) for Java 8?Java 8 的 AIDL (Android) 是否支持默认方法?
【发布时间】:2019-09-24 15:41:02
【问题描述】:

我以前在 android 中实现了用于 IPC 的 AIDL。我想添加新方法,因为这个aidl 在客户端类中有多个实现,我不想为所有类实现。我想使用默认方法,就像它在 Java 8 中支持的那样。

【问题讨论】:

    标签: android kotlin java-8 aidl


    【解决方案1】:

    default 关键字应该在任何interface 描述中可用,即使是从AIDL 生成的。这不会向后兼容 Java 7,因此它可能需要 minSdkVersion 26 并且:

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

    【讨论】:

    • 是的,实现相同。但是当我在 AIDL 接口文件编译器中编写任何默认方法时,根本不接受它。
    • AIDL 处理器可能仍然不知道您使用 Java 7 构建的内容还是 default 关键字。当手动定义 interface 而不是生成它时,它应该仍然可以工作。可能这值得一个错误报告。
    【解决方案2】:

    使用它谁在阻止你?

    在界面内部,您可以编写如下代码:

    默认无效显示() {

      System.out.println("Default method here"); 
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-03
      • 2013-08-15
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2015-12-18
      • 2017-03-25
      相关资源
      最近更新 更多