【发布时间】:2011-08-02 07:47:57
【问题描述】:
我正在使用 Scala 中的 JAX-RS 并尝试将调用参数化:
val jc = JAXBContext.newInstance(classOf[MyClassName])
根据here 的答案,我一直在使用 ClassManifests,但有几件事我仍在苦苦挣扎。作为背景,我的 JAX-RS 表示都扩展了一个存根表示类:
class Representation {}
class ExampleRepresentation extends Representation { ... }
到目前为止,我已经使用 ClassManifest 定义了我的函数,如下所示:
def get[R: ClassManifest](representation: R): String = {
val jc = JAXBContext.newInstance(classManifest[R].erasure)
...
}
我的第一个问题有点傻:如何调用这个函数?我不知道要为 R 类型和表示值传递给 get() 的内容(对原始问题的接受答案并不清楚)。我根据范例的评论尝试了隐式输入,但下面会产生编译错误:
get(PlatformRepresentation)
Compiling main sources...
not found: value PlatformRepresentation
我的第二个问题是:是否可以在 R 对象上应用上限类型?换句话说,我知道:
R <: Representation
有没有办法在 get() 的 ClassManifest 类型声明中限制 this?
非常感谢!
【问题讨论】:
-
要调用它,只需将参数传递给
get即可推断类型。 -
感谢范式-我已经更新了我的问题。我试图澄清我没有传递给 get() 的值,我只有一个类名可以传递。
标签: scala