Как анонимно реализовать интерфейс Java в scala?

Предположим, что у меня есть Java inteface

public interface Bar {

  public void baz(String st)
  public void jaz()
}

Я хочу реализовать анонимный интерфейс выше в scala внутри тела функции, например:

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


 }

}

Ответ 1

Если бы мне пришлось, я бы написал его как:

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

  def jaz(): Unit = {
    // method impl
  }
}

Хотя я предпочитаю избегать побочных эффектов, насколько это возможно, они не очень хорошо играют с функциональным программированием

Ответ 2

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

  def jaz() {
    // method impl
  }
}