[英]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.