首页 > 解决方案 > 当方法返回 RxJava Completable 时,Android Room 生成带有错误的 DAO

问题描述

我在 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 参数,但得到了同样的错误。

标签: android-room

解决方案


正如在这个stackoverflow question中所说,启用 j ava8 兼容性可以解决问题。

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

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

推荐阅读