单身对象vs val?

时间:2016-03-08 12:57:34

标签: scala singleton traits

以下哪种方式更好/首选?他们有什么不同?

trait MyService {
  def foo: String
}

class MyTest {
  // variant 1
 object fooService1 extends MyService {
   val foo = "foo1"
 }
 // variant 2
 val fooService2 = new MyService {
   val foo = "foo2"
 }
 // (...)
}

1 个答案:

答案 0 :(得分:2)

没有实际区别,除非您延长MyTest,否则您将能够覆盖val但不能覆盖object,[编辑],并且该对象会被懒惰地实例化。

此外,可能重复this