我有Room Dao,使用方法:
@Insert(onConflict = OnConflictStrategy.REPLACE)
abstract long upsertItem(@NonNull DBItem obj);
它在Android Studio 3.3.1中生成警告:“未注释重写的方法参数”。在自动求解菜单中,有一个选项“将覆盖的方法参数注释为'@NonNull'”。如果我选择它,则没有任何更改(项目文件没有更新的导入或更改-至少在git文件中[我使用https://github.com/github/gitignore]),但警告消失了一段时间(也许是项目清理或重新同步-不确定)。>
问题似乎与AndroidX迁移有关,因为我之前不记得它(使用支持库和API 27作为targetSdkVersion / compileSdkVersion,移至28和androidx.room)。但是无法回滚和检查。
此外,我的Dao类(在上面的示例中)没有父类,没有在子类中覆盖此方法,并且没有名称相同但带有其他参数的方法。因此,什么都不能被覆盖。
更新
了解问题所在!在Dao实现中,Room不会为参数生成@ Nullable / @ NonNull:返回值具有注释,输入参数则没有。
有什么办法可以解决(除了从参数中删除可空性注释)?