簡體   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