2014-09-13 52 views
0

在我的Scala類中使用Java接口時出現問題。這是問題。當在Scala中使用Java接口時,編譯器抱怨方法沒有實現

首先,這是簡化的Java接口:

java.util.concurrent.TimeUnit; 
import Message; 

public interface JavaInterface { 
    public Message get(int param1, Long param2, TimeUnit unit); 
} 

然後,我有嘗試使用此接口

java.util.concurrent.TimeUnit 
import Message 

class ScalaClass extends JavaInterface { 
    def get(param1:Int, param2: Long, unit:TimeUnit):Message = { 
     new Message("Just a test") 
    } 
} 

但是,當它編譯,Scala編譯器不斷抱怨Scala的類那個get()函數沒有在ScalaClass中實現:

class ScalaClass需要是抽象的,因爲: [error]它有1個un實施成員。 [error]/**從類ScalaClass中可以看出,缺少的簽名如下。 [error] *爲方便起見,這些可用作存根實現。 (錯誤)*/ [error] def get(x $ 1:Int,x $ 2:Long,x $ 3:java.util.concurrent.TimeUnit):Message = ???

我懷疑這可能是因爲Scala不喜歡那個Java int,但是我還沒有能夠得到這個工作,有沒有人有任何想法?

謝謝 IS

回答

5

Int是罰款

scala> classOf[Int] 
res0: Class[Int] = int 

Long不是

scala> classOf[Long] 
res3: Class[Long] = long 

def get(param1:Int, param2: java.lang.Long, unit:TimeUnit): Message = 
    new Message("Just a test") 
+3

一試或者,也許Java接口應該有一個'long'而不是'Long'? – 2014-09-13 01:13:58