考虑到更改与源兼容,通常应该首选哪种解决方案?
这
object Foo {
val Bar = new Baz(42, "The answer", true)
}
或这个?
object Foo {
object Bar extends Baz(42, "The answer", true)
}
考虑到更改与源兼容,通常应该首选哪种解决方案?
这
object Foo {
val Bar = new Baz(42, "The answer", true)
}
或这个?
object Foo {
object Bar extends Baz(42, "The answer", true)
}
两种构造之间的功能区别在于object Bar
仅在需要时val Bar
创建,而在使用时立即创建object Foo
。实际上,这意味着lazy val
如果右侧很昂贵并且并不总是需要,则应该使用对象(或)。否则,val
可能更简单。
另外,请注意,如果该类Baz
是最终的,您将无法使用该object
样式,因为您无法扩展Baz
(尽管lazy val
如果您想将创建推迟到需要时,您仍然可以使用)。
我说第一个,因为在第二个中,您正在创建一个新类但不添加任何信息(不覆盖方法、值或新的)。