opt*_*nal 1 scala companion-object
我是scala的新手并试图理解scala oops概念.我创建了一个类:
class MyComp private{
// some fields and method goes here
}
Run Code Online (Sandbox Code Playgroud)
当我编译它时
scalac MyComp.scala
Run Code Online (Sandbox Code Playgroud)
它创建了一个私有构造函数.但是当我创建一个伴侣对象而不是构造函数变得公开时,我无法理解这个概念.请清楚
这是MyComp类的伴随对象的代码
object MyComp
{
private val comp= new MyComp;
def getInstance= comp;
}
Run Code Online (Sandbox Code Playgroud)
JVM不理解伴随对象的概念(以及scala语言的其他方面).
因此,scalac别无选择,只能MyComp根据Java字节码制作public 的构造函数,否则JVM将不允许MyComp$(MyComp通常称为模块类的伴随类)进行实例化MyComp.这是,因为MyComp和MyComp$都是从视点的JVM完全无关.
Scalac尝试尽最大努力保持可见性修饰符,但有时必须增加字节码中的可见性以支持某些特定于Scala的规则.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |