Gol*_*irl 8 java int integer scala
我是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])
Run Code Online (Sandbox Code Playgroud)
我尝试使用.instanceOf [java.lang.Integer],但这也不起作用。
我不确定如何解决此问题。有人可以帮我吗?谢谢。
小智 8
您需要做的就是将 int 值传递给 Integer() 的构造函数。您现在可以传递这个新对象。
scala> val n = 20
n: Int = 20
scala> new Integer(n)
res0: Integer = 20
scala> res0.getClass
res1: Class[_ <: Integer] = class java.lang.Integer
Run Code Online (Sandbox Code Playgroud)
小智 2
我认为大多数其他答案都涵盖了它,您的问题是 Option 的使用,而不是 scala 和 java 整数之间的差异。您可以使用选项做很多事情,例如: 给定:
val optionOfInteger = Option(5)
Run Code Online (Sandbox Code Playgroud)
val i = optionOfInteger.get)val i = optionOfInteger.getOrElse(0))val optionOfString = optionOfInteger.map(_.toString))val str = optionOfInteger.fold("Nothing")(_.toString))def myFn(findingFrame: FindingFrame) = {
findingFrame.in.foreach{i => javaMethod(i) }
}
在上面你可以使用map,或者match/case来代替。