[英]Scala type (inference) issue?
我正在使用Jersey JAX-RS参考实现在Scala中开发REST Web服务,我遇到了一个奇怪的错误。
我正在尝试使用ContentDisposition.ContentDispositionBuilder创建ContentDisposition对象。
ContentDisposition.ContentDispositionBuilder
有两种类型T extends ContentDisposition.ContentDispositionBuilder
和V extends ContentDisposition
。 ContentDisposition
的方法type
返回构建器实例。
编码
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中的关键字)
ContentDispositionBuilder
fileName
返回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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.