7

我正在使用Jersey JAX-RS 参考实现在 Scala 中开发 REST Web 服务,但遇到了一个奇怪的错误。

我正在尝试使用ContentDisposition.ContentDispositionBuilder创建一个ContentDisposition对象。

ContentDisposition.ContentDispositionBuilder有两种类型T extends ContentDisposition.ContentDispositionBuilderV 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 中的关键字)

fileNameofContentDispositionBuilder返回一个实例,T所以这实际上应该有效。

我不明白这个。任何想法?顺便说一句,我正在使用 Scala 2.9.0.1。

更新:

这行得通。但是为什么我需要在这里进行选角?

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
  .fileName("dummy")
  .asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
  .build()
4

1 回答 1

2

我猜类型推断只能走这么远......你可能可以用两行来完成,而无需进行任何强制转换;你试过这个吗?

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()
于 2011-09-27T18:43:49.613 回答