检查阶元组包含`在Java中

null`我有一个元组的Scala是:检查阶元组包含`在Java

val myTuple: (Int, Int) = (null.asInstanceOf[Int], 1) 

,我从Java访问。问题是在Java中,myTuple._1()返回0而不是null,正如我解释的here。相反,myTuple._1将返回始终为空,无论设置的值如何。因此,我不知道如何检查哪一个是真正的价值:我如何检查它是否是null0或任何其他值?

谢谢。

回答:

问题是在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

回到顶部