Scala中的java.util.Enumeration

时间:2011-11-03 16:56:09

标签: scala scala-collections

如何为exists正确致电java.util.Enumeration?我无法更改来源,它来自HttpServletRequest

这个(不相关的)代码有效:

val a = List("One", "Two", "Three")
a exists (_ contains "T")

但是为什么这段代码无法编译:

import collection.JavaConversions.enumerationAsScalaIterator
enumerationAsScalaIterator(req.getHeaderNames[String])[String] exists (_ contains "T")

我正在使用IntelliJ作为我的IDE。上面的代码在编辑器中没有显示任何错误,但在编译时会抛出错误:

错误:';'预期,但'''发现。 enumerationAsScalaIterator(req.getHeaderNames [String])[String]存在(_包含“T”)

4 个答案:

答案 0 :(得分:5)

尝试

import collection.JavaConversions.enumerationAsScalaIterator

req.getHeaderNames() exists (_ contains "T")

答案 1 :(得分:1)

应为enumerationAsScalaIterator[String](req.getHeaderNames[String]) exists (_ contains "T")(或隐式使用as Pablo Fernandez suggests)。不知道为什么它不会在编辑器中显示错误。

答案 2 :(得分:1)

你的第二个[String]在这里: req.getHeaderNames [字符串])[字符串] 不需要,并且Scala无效。 试试

enumerationAsScalaIterator(req.getHeaderNames[String]) exists (_ contains "T")

更好的是,enumerationAsScalaIterator是隐式可用的,所以你应该能够做到:

req.getHeaderNames exists (_ contains "T")

答案 3 :(得分:1)

看起来为HttpServletRequest.getHeaderNames执行此操作的唯一方法是旧的循环:

val headers = req.getHeaderNames
while (headers.hasMoreElements) {
if (headers.nextElement.asInstanceOf[String] contains "T")
  return FOO
}