1
Scala classOf for type parameter
我已經試過落實,但似乎得到一些奇怪的仿製藥的問題,其實我已經通過他們夫婦糊塗我的路現在,但是這是因爲接近正確,我可以得到它...
我使用斯卡拉 - 傑克遜JSON綁定(順便說優秀的lib,比SJson容易得多)
def genparseResult[T: ClassManifest](t: T,s:String):Either[Tuple2[JsonParseException,String],T] = {
try{
val res = jsonSerializer.readValue(s, classManifest[T].erasure)
Right(res)
}
catch{
case jpe:JsonParseException => Left((jpe,s))
}
}
總之,上面的代碼被生成以下編譯錯誤:
type mismatch; found : res.type (with underlying type Any) required: T
我很困惑,地獄。上面的代碼應該能夠工作嗎?
更新 下從天使輸入,我發佈了已完成的課程
import com.fasterxml.jackson.core.JsonParseException
object DatasiftJsonMapper {
import java.util.Date
import com.fasterxml.jackson.databind.{ Module, ObjectMapper }
import com.fasterxml.jackson.module.scala.DefaultScalaModule
val jsonSerializer = {
val m = new ObjectMapper()
m.registerModule(DefaultScalaModule)
m
}
def parseDSResult(s: String): Either[Tuple2[JsonParseException, String], DatasiftResult] = {
genparseResult(classOf[DatasiftResult], s)
}
def parseQRegRequest(s: String): Either[Tuple2[JsonParseException, String], QRegRequest] = {
genparseResult(classOf[QRegRequest], s)
}
def genparseResult[T: ClassManifest](t: Class[T], s: String): Either[Tuple2[JsonParseException, String], T] = {
try {
val res = jsonSerializer.readValue(s, classManifest[T].erasure).asInstanceOf[T]
Right(res)
} catch {
case jpe: JsonParseException => Left((jpe, s))
}
}
}
在金錢上,tenshi –