考虑到更改是源兼容的,通常应该选择哪种解决方案?
此
object Foo {
val Bar = new Baz(42, "The answer", true)
}
还是这个?
object Foo {
object Bar extends Baz(42, "The answer", true)
}
答案 0 :(得分:8)
两个结构之间的功能差异在于object Bar
仅在需要时创建,而val Bar
只在使用object Foo
时创建。实际上,这意味着如果右侧价格昂贵且不一定需要,则应使用对象(或lazy val
)。否则,val
可能更简单。
另请注意,如果班级Baz
是最终版,则您将无法使用object
样式,因为您无法扩展Baz
(尽管您仍然可以使用lazy val
如果你想推迟创作直到需要它。
答案 1 :(得分:2)
我说第一个,因为在第二个,你正在创建一个新类,但不添加任何信息(没有覆盖方法,值或新的)。