我正在使用布局xml中的ObservableArrayMap
为我的Android应用实现数据绑定。
地图的键和值有明确定义的类型(例如ObservableArrayMap<String, Integer>
,但是我一直收到错误error: incompatible types: Object cannot be converted to Integer
。
错误的原因很明显:生成的ViewBinding Java文件完全忽略了地图类型参数的类型,并将地图声明为android.databinding.ObservableArrayMap
。因此,在访问其值时,它会返回Object
而不是Integer
。
为什么它会这样做?我得到类型在运行时被删除,但是,它必须工作,否则,在代码中定义地图类型参数的重点是什么?
什么甚至更奇怪,编译器会执行类型检查:如果要将错误类型的参数传递给布局xml中的get()
方法,则会出现错误。