scala传递T类型给Java构造函数



我在scala 2.11/2.12val mapper = new ObjectMapper(new YAMLFactory())中使用Jackson read Yaml,我认为我调用的Java构造函数是

public <T> T readValue(String content, Class<T> valueType)

此代码有效

def load(): SomeClass {
mapper.readValue[SomeClass](configStr, classOf[SomeClass])
}

但是我想把这个类改成T

mapper.readValue[T](configStr, classOf[T])

错误class type required but T found

我搜索了一些并将其更改为

def load[T: ClassTag](): T = {
mapper.readValue[T](configStr, classTag[T].runtimeClass)
}

但是它说没有匹配的构造方法

classTag[T].runtimeClass的返回类型是Class[?],您必须使用.asInstanceOf(在这种用法中是安全的):

mapper.readValue[T](configStr, classTag[T].runtimeClass.asInstanceOf[Class[T]])

请注意,如果您使用的是Jackson Scala模块,为了避免样板文件

,这些方法已经提供给您了。

相关内容

  • 没有找到相关文章

最新更新