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

时间:2010-06-18 09:32:25

标签: java scala interface

我刚开始学习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 个答案:

答案 0 :(得分:43)

第二个界面可以使用with关键字

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

此外,每个后续界面都使用关键字with分隔。

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