[英]java.util.Enumeration in Scala
如何正確調用java.util.Enumeration
exists
? 我無法更改源代碼,它來自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”)
嘗試
import collection.JavaConversions.enumerationAsScalaIterator
req.getHeaderNames() exists (_ contains "T")
它應該是enumerationAsScalaIterator[String](req.getHeaderNames[String]) exists (_ contains "T")
(或隱含地使用它, 如Pablo Fernandez建議的那樣 )。 不知道為什么它不會在編輯器中顯示錯誤。
你的第二個[String]:req.getHeaderNames [String])[String]不需要,並且無效Scala。 嘗試
enumerationAsScalaIterator(req.getHeaderNames[String]) exists (_ contains "T")
更好的是,enumerationAsScalaIterator是隱式可用的,所以你應該能夠做到:
req.getHeaderNames exists (_ contains "T")
看起來為HttpServletRequest.getHeaderNames
執行此操作的唯一方法是很好的舊循環:
val headers = req.getHeaderNames
while (headers.hasMoreElements) {
if (headers.nextElement.asInstanceOf[String] contains "T")
return FOO
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.