Android Room 在方法 returns RxJava Completable 时生成错误的 DAO

Android Room generates DAO with error when method returns RxJava Completable

我在 Dao 接口中有这样的 @Insert 方法:

@Insert(onConflict = REPLACE)
fun insertOrUpdateAllMessages(vararg messages: QuestMessageDbModel): Completable

当我构建我的项目时出现错误:

error: local variable questsModels is accessed from within inner class; needs to be declared final
      __insertionAdapterOfQuestDbModel.insert(questsModels);
                                              ^

当我打开生成的 QuestDao_Impl.java 时,我看到了这样的代码:

我做错了什么?我试图用 List 替换 vararg 参数,但得到了同样的错误。

如本文所述, enabling java8 compatibility 解决了问题。

将此添加到您想要的项目模块 gradle 文件中,在 android 闭包内:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}