【问题标题】:Scala type (inference) issue?Scala类型(推理)问题?
【发布时间】:2011-11-07 09:38:01
【问题描述】:

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

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

ContentDisposition.ContentDispositionBuilder 有两种类型T extends ContentDisposition.ContentDispositionBuilderV extends ContentDispositionContentDisposition 的方法 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()

【问题讨论】:

  • 是我自己还是你的链接似乎都不起作用?
  • 目前看来 java.net 已关闭 :-(
  • 该错误与 Java 通配符和 Scala 存在性之间的互操作有关。虽然相似,但这两种类型的系统功能并不相同。这是在黑暗中的尝试,但对于刚刚发布的 Scala 2.9.1 可能值得一试。
  • 在使用 Hadoop 时,我在 2.9.0.1 中遇到了一些互操作问题(TextInputFormat 在需要 InputFormat 的地方不起作用)。 2.9.1 效果更好。我至少希望您能获得更多信息的例外!
  • 2.9.1 没有为我解决这个问题:(我仍然必须使用显式转换。

标签: scala types jersey inference


【解决方案1】:

我猜类型推断只能走这么远......你可能可以用两行来完成,而无需进行任何强制转换;你试过吗?

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多