我正在使用Jersey JAX-RS參考實現在Scala中開發REST web服務,並且出現一個奇怪的錯誤。Scala類型(推理)問題?
我正在嘗試使用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
需要在 「引號」,因爲它是一個關鍵字在斯卡拉)
fileName
ContentDispositionBuilder
返回T
的實例,所以這實際上應該工作。
我不明白這一點。任何想法? 我正在使用Scala 2.9.0.1。
更新:
這工作。但爲什麼我需要在這裏投射?
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
.fileName("dummy")
.asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
.build()
難道只是我還是沒有你的鏈接似乎工作? – agilesteel
看起來java.net目前處於關閉狀態:-( –
該錯誤與Java通配符和Scala存在之間的互操作有關,雖然類似,但這兩種類型的系統功能並不相同,這是在黑暗中拍攝的,但它可能是值得嘗試剛剛發佈的Scala 2.9.1 –