[英]Scala type mismatch with generics ArraySeq[T] instead of Array[T]
我有这种方法:
private def doSomeStringProcessing[T](input: String, typeConverter: String => T): Array[T] = {
cleanTheString(input)
.split(",").map(typeConverter)
}
这给出了错误:
error: type mismatch;
[INFO] found : scala.collection.mutable.ArraySeq[T]
[INFO] required: Array[T]
通过一些谷歌搜索,发现帖子说要使用ClassManifest。 试了一下,不推荐使用。 因此,它指向了ClassTag。 在Google上搜索并找到了我要遵循的资源: https : //docs.scala-lang.org/overviews/reflection/typetags-manifests.html#via-the-methods-typetag-classtag-or-weaktypetag
所以我尝试做以下:
private def doSomeStringProcessing[T: TypeTag](input: String, typeConverter: String => T): Array[T] = {
cleanTheString(input)
.split(",").map(typeConverter)
}
这给出了完全相同的错误。 我想让泛型使我的代码更清晰/更易于阅读,而不是使代码混乱,所以我不想做任何复杂的解决方案。 解决此问题的最快方法是什么?
这确实适用于ClassTag(我很困惑,因为IntelliJ导入错误和/或代码完成错误,所以在下面包括正确的导入):
import scala.reflect.ClassTag
private def doSomeStringProcessing[T: ClassTag](input: String, typeConverter: String => T): Array[T] = {
cleanTheString(input)
.split(",").map(typeConverter)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.