在没有代码循环的情况下从 Java 枚举中获取对象的最佳方法是什么?



使用Scala从Java枚举中获取对象的最佳方法是什么?我正在使用while循环检索此值,但我想使用。map()之类的东西,无需编写循环即可获得此值:

private def getMsgId(mimeMessage: MimeMessage): String = {
    var msgId: String = null
    val iterator = enumerationAsScalaIterator(mimeMessage.getAllHeaders())
    breakable {
      while (iterator.hasNext) {
        val header = iterator.next.asInstanceOf[Header]
        if (header.getName().equalsIgnoreCase("MessageId")) {
          msgId = header.getValue()
          break
        }
      }
    }
    return msgId;
}

什么是另一个选项来获得值"header.getValue()"不使用循环像while或for?

提前感谢。

一个注意:如果你的函数可能实际上不是找到你正在寻找的消息ID,它应该返回Option[String]代替。话虽如此,已经有一个从Enumeration[A]到Scala的Iterator[A]的隐式转换,你只需要:

import collection.JavaConversions.enumerationAsScalaIterator

之后:

 mimeMessage.getAllHeaders
            .find(_.getName.equalsIgnoreCase("MessageId")
            .map(_.getValue)

返回Option[String]

相关内容

  • 没有找到相关文章

最新更新