我正在使用 Jersey 在 Scala 中开发 REST web 服务JAX-RS 引用实现,我收到一个奇怪的错误。
我正在尝试创建一个 ContentDisposition对象使用 ContentDisposition.ContentDispositionBuilder .ContentDisposition.ContentDispositionBuilder
有两种类型T extends ContentDisposition.ContentDispositionBuilder
和 V extends ContentDisposition
.方法type
的 ContentDisposition
返回一个构建器实例。
编码
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).build()
然而有效
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
产生编译器错误
error: value build is not a member of ?0
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
^
(注意
type
需要放在“引号”中,因为它是 Scala 中的关键字)fileName
的 ContentDispositionBuilder
返回 T
的实例所以这实际上应该有效。我不明白这个。任何的想法?
顺便说一下,我正在使用 Scala 2.9.0.1。
更新:
这有效。但是为什么我需要这里的类型转换?
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
.fileName("dummy")
.asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
.build()
最佳答案
我猜类型推断只能到此为止……您可能可以用两行来完成,而无需进行任何强制转换;你试过这个吗?
val something=ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
val contentDisposition=something.fileName("dummy").build()
或者可能
val builder=ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy")
val contentDisposition=builder.build()
关于Scala 类型(推理)问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253779/