我有一个房间(v2.4.0-beta01)数据库,虽然它运行良好,但在构建过程中,它在几个字段上给出了一个字段与getter不匹配的警告,如下所示。
我怀疑这是由于Kotlin和Java之间的互操作问题,因为Kotlin和自动生成的Java中的字段定义并不完全匹配。虽然导致问题的Any是可以理解的,但我希望密封类对象的列表能够顺利工作。
有什么想法,我可以理想地解决警告,或至少让房间知道这不是一个问题?
PS:为了隐私和简单,类/变量名已经更改了。
警告
com.example.Entity's myObjects field has type java.util.List<? extends com.example.MySealedClass> but its getter returns java.util.List<com.example.MySealedClass>. This mismatch might cause unexpected myObjects values in the database when com.example.Entity is inserted into database.
private java.util.List<? extends com.example.MySealedClass> layoutElements;
com.example.Entity's myMap field has type java.util.Map<java.lang.String, ?> but its getter returns java.util.Map<java.lang.String, java.lang.Object>. This mismatch might cause unexpected myMap values in the database when com.example.Entity is inserted into database.
private java.util.Map<java.lang.String, ? extends java.lang.Object> myMap;Entity.kt
@ColumnInfo(name = "myObjects")
var myObjects: List<MySealedClass> = listOf(),
@ColumnInfo(name = "myMap")
@TypeConverters(MyTypeConverter::class)
var myMap: Map<String, Any>? = null,Entity.java (房间生成)
@org.jetbrains.annotations.NotNull()
@androidx.room.ColumnInfo(name = "myObjects")
private java.util.List<? extends com.example.MySealedClass> myObjects;
@org.jetbrains.annotations.Nullable()
@androidx.room.ColumnInfo(name = "myMap")
private java.util.Map<java.lang.String, ? extends java.lang.Object> myMap;MySealedClass.kt
sealed class MySealedClass(val x: Int, val y: Boolean = false) : Serializable {
data class InnerClass(private val z: Int) : MySealedClass(z), Serializable
data class InnerClass2(private val zz: Int) : MySealedClass(z), Serializable
}发布于 2022-05-11 21:58:09
我有相同的警告,并通过将映射的数据类型从<String, Any>更改为<String, *>来解决它
https://stackoverflow.com/questions/70606390
复制相似问题