我已经开始学习Scala了。在Java中的对象与Scala中的对象之间是否有任何区别。根据我的理解,在Scala中创建的对象是单例。还有其他指示。
答案 0 :(得分:2)
在Java中,Object
(大写)是顶级的。所有课程都延伸Object
。原始类型(int
,long
等)不会扩展Object
,因为它们不是类
在Scala中,有一个不同的层次结构。一切都扩展了类Any
:引用类型扩展AnyRef
,值类型扩展AnyVal
,与Java不同,没有基元。 (查看文档:{{3}})
但是你在Scala中引用的object
是单身人士。拥有一个你想成为单身人士的班级是很常见的。在java中有一个实现它的模式(例如http://docs.scala-lang.org/tutorials/tour/unified-types),在scala中他们创建了object
关键字作为速记。
还有一个特殊情况:当在同一个编译单元中定义了同名的class
和object
时,该对象称为伴随对象,基本上你可以想到它持有你在Java中的静态方法
有关http://www.javaworld.com/article/2073352/core-java/simply-singleton.html
主题的更多信息答案 1 :(得分:0)
这取决于您在Scala中创建对象的方式。它并不像所有对象创建都是Singleton。
例如:
object Shiva { /*some code*/}
将创建一个单例对象。但是如果你像在Java中那样定义一个类,你可以创建多个实例。