val或不可变的对象,最终的单例对象

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

要回复问题请先登录注册