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

use*_*458 0 java inheritance scala 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);
}
Run Code Online (Sandbox Code Playgroud)

然后,我有一个尝试使用此接口的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")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当它编译时,Scala编译器一直抱怨scalaClass中没有实现get()函数:

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

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

谢谢你

Gab*_*lla 5

Int是细

scala> classOf[Int]
res0: Class[Int] = int
Run Code Online (Sandbox Code Playgroud)

Long事实并非如此

scala> classOf[Long]
res3: Class[Long] = long
Run Code Online (Sandbox Code Playgroud)

试试吧

def get(param1:Int, param2: java.lang.Long, unit:TimeUnit): Message =
  new Message("Just a test")
Run Code Online (Sandbox Code Playgroud)

  • 或者,也许Java接口应该有一个`long`而不是`Long`? (3认同)