【发布时间】:2012-11-18 05:42:06
【问题描述】:
我有一个带有 2 个参数的 Scala 方法:
def test(x:Long,y:Int){}
在某些情况下,我需要传递 null 而不是 long ...类似的东西:
test(null,x)
结果:
scala> test(null,2) :7: 错误:类型不匹配;成立 : 需要空(空):长 测试(空,2)
为什么我需要传递 null? 实际上,由于某种原因,我无法传递任何默认值。 因此,我需要这样一个空值。
*注意:*我知道解决方案是让它成为选项。 但是,假设我无法控制此方法签名,我可以做任何工作吗?
任何想法!
谢谢。
【问题讨论】:
-
你也可以使用 java.lang.Long
-
Scala 的
Long实际上映射到 JVM 原始类型long。因此,ScalaLong不能是null,因为原始类型不能是null。 (不要将scala.Long与java.lang.Long混淆!)。 -
这里的问题是 jdbc 是 java 和数据库存储 null 值的可空长。如果你在 scala 系统中将它们作为 0L 传递,你就是在问问题。