hector-scala型失配

hector-scala型失配,scala,hector,Scala,Hector,有什么不对劲吗 val is = IntegerSerializer.get mutator.addInsertion(deviceId, COLUMN_FAMILY_CARSTATUS, createColumn("mileage", 111, ss, is))} ModelOperation.scala:96: error: type mismatch; [INFO] found : me.prettyprint.cassandra.serializers.IntegerSeria

有什么不对劲吗

val is = IntegerSerializer.get
mutator.addInsertion(deviceId, COLUMN_FAMILY_CARSTATUS, createColumn("mileage", 111, ss, is))}


ModelOperation.scala:96: error: type mismatch;
[INFO]  found   : me.prettyprint.cassandra.serializers.IntegerSerializer
[INFO]  required: me.prettyprint.hector.api.Serializer[Any]
[INFO] Note: java.lang.Integer <: Any (and me.prettyprint.cassandra.serializers.IntegerSerializer <: me.prettyprint.cassandra.serializers.AbstractSerializer[java.lang.Integer]), but Java-defined trait Serializer is invariant in type T.
[INFO] You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
[INFO]      mutator.addInsertion(deviceId, COLUMN_FAMILY_CARSTATUS, createColumn("mileage", 111, ss, is))}
val is=IntegerSerializer.get
mutator.addInsertion(deviceId,COLUMN\u FAMILY\u CARSTATUS,createColumn(“里程”,111,ss,is))}
scala:96:错误:类型不匹配;
[信息]找到:me.prettyprint.cassandra.serializers.IntegerSerializer
[信息]必需:me.prettyprint.hector.api.Serializer[任何]

[信息]注意:java.lang.Integer错误是说
createColumn
需要类型为
serializer[Any]
的序列化程序,但您正在传递类型为
serializer[Integer]
的序列化程序。只有当
序列化程序
的类型参数是协变的(即定义为
序列化程序[+T]
)时,这才有效。但是,相反,
序列化程序
来自Java,在Java中协方差的工作方式不同


类型
Serializer[Integer]
可以安全地强制转换为
Serializer[\u0不幸的是,您的解决方法不起作用。对于此代码:
val a=createColumn(“updateTime”,11,ss,IntegerSerializer.get.asInstanceOf[Serializer[\u0]啊,抱歉,我无法测试它。直接强制转换为
Serializer[Any]怎么样
?我更新了答案。顺便说一句,下面是相关的Java代码:它成功了,谢谢!
createColumn(“Milege”,11,ss,IntegerSerializer.get.asInstanceOf[Serializer[Any]])
编译得很好。Longerializer呢?使用Longerializer时也会出现同样的问题。
val is = IntegerSerializer.get.asInstanceOf[Serializer[Any]] // defeats type system
mutator.addInsertion(... is ...)