检查阶元组包含`在Java中
null`我有一个元组的Scala是:检查阶元组包含`在Java中
val myTuple: (Int, Int) = (null.asInstanceOf[Int], 1)
,我从Java访问。问题是在Java中,myTuple._1()
返回0
而不是null
,正如我解释的here。相反,myTuple._1
将返回始终为空,无论设置的值如何。因此,我不知道如何检查哪一个是真正的价值:我如何检查它是否是null
,0
或任何其他值?
谢谢。
回答:
问题是在Java世界null
不是int
类型的有效值。在斯卡拉世界里,事情是非常相似的。如果你只是运行
println(null.asInstanceOf[Int])
你会得到
作为输出。此行为在Scala规范的6.3 The Null Value部分中指定。
因此,您不能在int
中测试null
,因为它不能在那里。在Java世界中,对此的解决方法是java.lang.Integer
类,该类是int
的不可变对象封装,并且支持Autoboxing and Unboxing。所以,你可以尝试指定您的元组作为
val myTuple: (Integer, Integer) = (null, 1)
然而,在斯卡拉世界有更好的替代 - scala.Option
。并且自Java 8以来也有类似的java.util.Optional
。所以,你可能真正想要的是像
val myScalaTuple: (Option[Int], Option[Int]) = (None, Some(1)) val myJavaTuple: (Optional[Int], Optional[Int]) = (Optional.empty[Int](), Optional.of(1))
以上是 检查阶元组包含`在Java中 的全部内容, 来源链接: utcz.com/qa/258487.html