【发布时间】:2011-11-07 09:38:01
【问题描述】:
我正在使用 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()
【问题讨论】:
-
是我自己还是你的链接似乎都不起作用?
-
目前看来 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