如何在scala中匿名实现Java接口?

rjc*_*rjc 12 java scala

假设我有一个Java接口

public interface Bar {

  public void baz(String st)
  public void jaz()
}
Run Code Online (Sandbox Code Playgroud)

我想在函数体中的scala中匿名实现上面的接口,如:

def foo() = {
val bar : Bar = new Bar() {
// how to do that ?


 }

}
Run Code Online (Sandbox Code Playgroud)

Kev*_*ght 11

如果必须,我会把它写成:

val bar = new Bar {
  def baz(st: String): Unit = {
    // method impl
  }

  def jaz(): Unit = {
    // method impl
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然我的偏好是尽可能避免使用副作用方法,但它们在功能编程方面并不能很好地发挥作用


mis*_*tor 6

val bar = new Bar {
  def baz(st: String) {
    // method impl
  }

  def jaz() {
    // method impl
  }
}
Run Code Online (Sandbox Code Playgroud)