在Scala中使用Java接口时,编译器抱怨方法未实现

时间:2014-09-13 00:32:33

标签: java scala inheritance interface scala-2.10

我在Scala类中使用Java接口时遇到问题。这就是问题所在。

首先,这是简化的Java界面:

java.util.concurrent.TimeUnit;
import Message;

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

然后,我有一个尝试使用此接口的Scala类

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编译器一直在抱怨scalaClass中没有实现get()函数:

类ScalaClass需要是抽象的,因为: [错误]它有1个未实现的成员。 [error] / **从类ScalaClass中可以看出,缺少的签名如下所示。 [错误] *为方便起见,这些可用作存根实现。 [错误] * / [error] def get(x $ 1:Int,x $ 2:Long,x $ 3:java.util.concurrent.TimeUnit):Message = ???

我怀疑这可能是因为Scala并不喜欢Java int,但是我无法让它工作,有没有人有任何想法?

谢谢 IS

1 个答案:

答案 0 :(得分: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")