繁体   English   中英

Scala类型(推理)问题?

[英]Scala type (inference) issue?

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

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

ContentDisposition.ContentDispositionBuilder有两种类型T extends ContentDisposition.ContentDispositionBuilderV 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM