如何解决val或不可变的对象,最终的单例对象
| 考虑到更改与源兼容,通常应首选哪种解决方案? 这个object Foo {
val Bar = new Baz(42,\"The answer\",true)
}
或这个?
object Foo {
object Bar extends Baz(42,true)
}
解决方法
两种构造之间的功能差异在于,仅在需要时才创建
object Bar
,而在使用object Foo
时立即创建val Bar
。实际上,这意味着如果右侧比较昂贵并且不一定需要使用该对象(或lazy val
)。否则,ѭ6可能更简单。
另外,请注意,如果类Baz
是最终类,则您将无法使用object
样式,因为您无法扩展Baz
(尽管您仍可以使用lazy val
来推迟创建,直到需要它为止)。 )。
,我说的是第一个,因为在第二个中,您正在创建一个新类,但不添加任何信息(不覆盖方法,值或新信息)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。