簡體   English   中英

Scala中的java.util.Enumeration

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM