Scala类实现两个Java接口 - 如何?

2022-09-01 09:43:27

我刚刚开始学习Scala,我现在想知道如何用一个Scala类实现两个不同的Java接口?假设我有以下用Java编写的接口

public interface EventRecorder {
    public void abstract record(Event event); 
}

public interface TransactionCapable {
    public void abstract commit();
}

但是 Scala 类一次只能扩展一个类。我怎样才能有一个可以同时履行两个契约的 Scala 类?我是否必须将这些接口映射到特征中?

请注意,我的Scala类将从Java中使用,因为我正试图将用Scala编写的新功能注入到现有的Java应用程序中。现有框架期望两个接口契约都得到满足。


答案 1

第二个接口可以使用关键字实现with

class ImplementingClass extends EventRecorder with TransactionCapable {
  def record(event: Event) {}
  def commit() {}
}

此外,在每个后续接口上都用关键字分隔。with

class Clazz extends InterfaceA
  with InterfaceB
  with InterfaceC {
  //...
}

答案 2