问题描述
|
考虑到更改与源兼容,通常应首选哪种解决方案?
这个
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
来推迟创建,直到需要它为止)。 )。
,我说的是第一个,因为在第二个中,您正在创建一个新类,但不添加任何信息(不覆盖方法,值或新信息)。