2010-06-18 26 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