试图理解“最终抽象类Int私人扩展Scala中的AnyVal
来自Java Land我一直在试图教自己Scala。最近我正在使用Int数据类型,我决定查找Int类的API
???????????? here。 令我困惑的是Int的类定义,即“抽象决赛” 所以我想知道的是: 解决方法
正如om-nom-nom在评论中指出的,抽象禁止实例化(新的Int),而最终的禁止子类化(新的Int {…})。
其原因是scala.Int直接由Java虚拟机的原始整数类型表示;其他类似的类型是Byte,Short,Char,Long,Float,Double,Boolean。因为它们是运行时的原始类型(表现出比所谓的盒式类型更好的性能),并且JVM不允许添加新的原语,所以没有合法的方式来扩展这些类型。也没有办法实例化它们,而不是给出一个文字(val i:Int = 33)。 Scala具有这些类型来创建一个统一的对象系统,其中原始类型和“对象”之间没有逻辑上的区别。然而,顶部有一个分层区别,它是AnyRef(对应于java.lang.Object)和AnyVal(对应于那些原始类型;以及添加Scala的新类型Unit)。 统一型系统的更多信息由Tour of Scala: Unified Types提供 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- scala转换Int => Seq [Int]到Seq [Int => Int]
- 排序 – PrimeNG TurboTable可排序列排序指示器?
- scala – 是否有更惯用的方法从Option [IO [Option [A]]获取
- 设置vim的默认模板文件
- angularjs – 角度2,如何使用setTimeout?
- bash – rsync:–include-from vs. –exclude – 从什么是
- 如何在angularjs中链接承诺错误函数
- angularjs – 如果定义了变量,则设置角度等级?
- scala – 如何将Array [String]转换为Set [String]?
- 如何在Scala中实现org.hibernate.Session