gpt4 book ai didi

Scala classOf 用于类型参数

转载 作者:行者123 更新时间:2023-12-03 05:17:20 24 4
gpt4 key购买 nike

我正在尝试使用 scala/java 创建一个用于对象更新的通用方法,但我无法获取类型参数的类。

这是我的代码:

object WorkUnitController extends Controller {     
def updateObject[T](toUpdate: T, body: JsonObject){
val source = gson.fromJson(body, classOf[T]);
...
}
}

我得到的错误是

class type required but T found

我知道在 java 中你做不到,但是这在 scala 中可能吗?

谢谢!

最佳答案

由于 Manifest弃用(自 Scala 2.10.0 起),这是更新的答案 -

import scala.reflect.ClassTag
import scala.reflect._

object WorkUnitController extends Controller {
def updateObject[T: ClassTag](toUpdate: T, body: JsonObject){
val source = gson.fromJson(body, classTag[T].runtimeClass)
???
}
}

您应该使用ClassTag而不是ClassManifest.runtimeClass 而不是 .erasure

原始答案-是的,您可以使用 list 来做到这一点:

object WorkUnitController extends Controller {     
def updateObject[T: ClassManifest](toUpdate: T, body: JsonObject){
val source = gson.fromJson(body, classManifest[T].erasure);
...
}
}

关于Scala classOf 用于类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6200253/

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