我是scala的新手,并与scala和Java一起工作。

我试图将scala Int传递给接受Integer(java.long.Integer)的方法。由于它们的类型不同,因此编译器会给出错误信息。

 /* name- Option[String], id- Option[Integer] , mask- Option[String]*/
 new findingFrame(name,id, mask)

 case class findingFrame(name: String,
                         id: Option[java.lang.Integer],
                         mask : Option[String])

我尝试使用.instanceOf [java.lang.Integer],但这也不起作用。

我不确定如何解决此问题。有人可以帮我吗?
谢谢你。

最佳答案

我认为大多数其他答案都可以解决这个问题,您的问题是使用Option,而不是scala和Java整数之间的区别。您可以使用选项做很多事情,例如:
鉴于:

val optionOfInteger = Option(5)
  • (丑陋)假设您的选项始终具有一个值,只需使用get(val i = optionOfInteger.get)
  • 应用默认值:(val i = optionOfInteger.getOrElse(0))
  • 您可以将整数选项映射到其他选项(val optionOfString = optionOfInteger.map(_.toString))
  • 您可以在一个调用中完成最后两个操作(val str = optionOfInteger.fold("Nothing")(_.toString))
  • 您还可以将Option视为一个的集合,因此您可以对Collection进行的所有操作都可以与Option一起进行,包括将其转换为其他类型的集合,对其进行折叠等。
    在您的情况下,此方法的一个好用法可能是决定调用还是不调用java方法。
  • def myFn(findingFrame: FindingFrame) = { findingFrame.in.foreach{i => javaMethod(i) } }
    在上面,您可以使用map或match/case。

    关于java - 如何将scala Int转换为java Integer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40605810/

    10-11 22:38
    查看更多