Java 规范提到,只有final
字段的类的构造函数与读取对该对象的任何引用的任何线程处于发生前关系:换句话说,应用程序不可能看到部分构造的对象。
Scala 通过将初始化提取到单独的方法来破解初始化,以确保在超类中的任何初始化代码之前设置“主构造函数 vals” 。这至少是 Scalafinal val
不总是(或永远?)翻译成 Javafinal
领域的原因之一。
- 有没有办法实现这一点,即确保类客户端及其构造函数之间的发生前关系?
- 哪个是编译器相当稳定的功能?
- 一个不是用Java编写类的?