首页 文章

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

提问于
浏览
25

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

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

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

但是Scala类一次只能扩展一个类 . 我怎样才能拥有可以同时履行这两个 Contract 的Scala类?我是否必须将这些界面映射到特征中?

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

1 回答

  • 43

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

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

    进一步在每个后续接口上用关键字 with 分隔 .

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

相关问题