2010-06-08 59 views
6

爲什麼地球上不會編譯?斯卡拉2.8.0RC3:與scala類實現java接口 - 類型問題

的Java

public interface X { 
    void logClick(long ts, int cId, String s, double c); 
} 

斯卡拉

class Y extends X { 
    def logClick(ts: Long, cId: Int,sid: java.lang.String,c: Double) : Unit = { 
    ... 
    } 
} 

錯誤

class Y needs to be abstract, since method logClick in trait X of type 
(ts: Long,cId: Int,s: java.lang.String,c: Double)Unit is not defined 

回答

2

你需要 class Y中的 logClick定義之前添加 override

class Y extends X { 
    override def logClick(ts: Long, cId: Int,sid: java.lang.String,c: Double) : Unit = { 
    ... 
    } 
} 


編輯:

丹尼爾下面說,你甚至不需要方法之前添加override的原因。你的代碼是正確的。

+0

對不起男人,這不解決問題 – paintcan 2010-06-08 16:27:35

+0

@paintcan,剛剛測試。它在這裏工作。你使用的是什麼版本的Scala? – missingfaktor 2010-06-08 16:31:36

+0

版本已發佈,但既然你說這對你有用,我們將嘗試在一個項目中重現問題,並刪除所有無關的廢話 – paintcan 2010-06-08 16:36:01