2010-06-18 60 views
23

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

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

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

但是一个Scala类一次只能扩展一个类。我怎样才能有一个可以完成这两个合同的Scala课程?我必须将这些接口映射成特性吗?

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

回答

39

第二接口可以与with关键字在每个后续的接口与关键字分离with来实现

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

此外。

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

谢谢!我真的尝试过,但IntelliJ发出了一些模糊的语法错误。我必须再试一次,看看项目是否安装不正确。 – puudeli 2010-06-18 10:23:40

+0

应该提及的是,后续的接口是用关键字'with'分开的?例如。 'x用q和z扩展y。 – 2016-10-20 14:47:13

+0

谢谢,完成! – 2016-10-25 05:41:59