7

JerseyJAX -RSリファレンス実装を使用してScalaでRESTWebサービスを開発していますが、奇妙なエラーが発生します。

ContentDisposition.ContentDispositionBuilderを使用してContentDispositionオブジェクトを作成しようとしています。

ContentDisposition.ContentDispositionBuilder2つのタイプがT extends ContentDisposition.ContentDispositionBuilderありV extends ContentDispositionます。のメソッドはビルダーインスタンスを返しますtypeContentDisposition

コード

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のキーワードであるため、「引用符」で囲む必要があることに注意してください)

fileNameofContentDispositionBuilderはのインスタンスを返すTので、これは実際に機能するはずです。

わかりません。何か案が?ちなみに私はScala2.9.0.1を使っています。

アップデート:

これは機能します。しかし、なぜここでキャスティングが必要なのですか?

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
  .fileName("dummy")
  .asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
  .build()
4

1 に答える 1

2

型推論はこれまでのところしかできないと思います...キャストをしなくても、おそらく2行で行うことができます。これを試しましたか?

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()
于 2011-09-27T18:43:49.613 に答える