为什么在Scala Long中不能像Integer一样初始化为null

muk*_*007 8 null scala long-integer

我正在创建我的Scala bean,这是一个从YML配置加载的配置.如果没有指定,我想要一个long属性为null,但我面临下面的问题.知道为什么吗?

startOffset: Integer = null
scala> var endOffset: Long = null
<console>:11: error: an expression of type Null is ineligible for implicit conversion
   var endOffset: Long = null
                         ^`
Run Code Online (Sandbox Code Playgroud)

PS:是的,我可以使用,Option[Long]但希望清晰,这种方法有什么问题.

The*_*ect 14

Scala LonglongJava中的文字日期类型.同样如此Int.但是Integer是Wrapper类,即java.lang.Integer

如果你想要可以为空的Long值,你可以使用 java.lang.Long


Vic*_*roz 9

Int并且Long是Scala类型并且派生自AnyVal,它不是引用类型(即不是AnyRef),因此不能null.Integer另一方面,是一个别名java.lang.Integer,它是一个引用类型.

不,这不是疏忽,Int并且Long是一致的,null在Scala中使用被认为是一件坏事,据我所知,它null只是为了兼容Java(甚至是AnyRef)以及Integer.