gpt4 book ai didi

scala - hector scala 类型不匹配

转载 作者:行者123 更新时间:2023-12-05 00:40:52 27 4
gpt4 key购买 nike

可能有什么问题?

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))}

最佳答案

错误是说 createColumn需要类型为 Serializer[Any] 的序列化程序,但您正在传递 Serializer[Integer] 类型之一.这仅适用于 Serializer在其类型参数中是协变的(即,定义为 Serializer[+T] )。但相反,Serializer来自 Java,其中协方差的工作方式不同。

型号Serializer[Integer]可以安全地转换到 Serializer[_ <: Any] ,所以 Scala 编译器建议可能是 createColumn应该编写为期望不太具体的通配符类型。

如果不能修改createColumn ,那么最后的手段就是使用“类型系统逃生舱门”asInstanceOf转换为预期类型:

val is = IntegerSerializer.get.asInstanceOf[Serializer[Any]] // defeats type system
mutator.addInsertion(... is ...)

关于scala - hector scala 类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7257805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com