Sve*_*obs 7 types scala inference jersey
我正在使用Jersey JAX-RS参考实现在Scala中开发REST Web服务,我遇到了一个奇怪的错误.
我正在尝试使用ContentDisposition.ContentDispositionBuilder创建ContentDisposition对象.
ContentDisposition.ContentDispositionBuilder有两种类型T extends ContentDisposition.ContentDispositionBuilder和V extends ContentDisposition.该方法type的ContentDisposition返回建设者实例.
代码
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).build()
Run Code Online (Sandbox Code Playgroud)
然而有效
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
Run Code Online (Sandbox Code Playgroud)
产生编译错误
error: value build is not a member of ?0
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
^
Run Code Online (Sandbox Code Playgroud)
(注意,type需要将其放在"引号"中,因为它是Scala中的关键字)
fileName中ContentDispositionBuilder返回的实例T所以这应该实际工作.
我不懂.任何的想法?我顺便使用Scala 2.9.0.1.
更新:
这有效.但为什么我需要这里的铸造?
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
.fileName("dummy")
.asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
.build()
Run Code Online (Sandbox Code Playgroud)
我想类型推断只能走这么远......您可能可以用两行来完成,而无需进行任何强制转换;你试过这个吗?
val something=ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
val contentDisposition=something.fileName("dummy").build()
Run Code Online (Sandbox Code Playgroud)
或者可能
val builder=ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy")
val contentDisposition=builder.build()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
511 次 |
| 最近记录: |