Scala SAM:使用Lambda实施时,如何访问SAM特性的受保护成员?

时间:2018-09-04 19:41:50

标签: scala

使用Lambda实现所述SAM时,如何访问SAM特性的受保护方法?

例如,这可以正常编译:

trait Foo {
  def foo(): String
  val bar = 5
}

val f: Foo = () => f.bar.toString

但是这些不:

trait Foo {
  def foo(): String
  protected val bar = 5
}

val f: Foo = () => f.bar.toString // Symbol bar is inaccessible from this place
val f: Foo = () => bar.toString // Cannot resolve symbol bar

实施带有lambda 的SAM 时,有什么方法可以访问栏?

1 个答案:

答案 0 :(得分:0)

尝试

val f: Foo = new Foo {
  override def foo(): String = bar.toString
}