2014-09-13 3 views
0

У меня проблема с использованием интерфейса Java в моем классе Scala. Вот проблема.При использовании интерфейса Java в Scala компилятор жалуется, что метод не реализован

Во-первых, это упрощенная 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 держит жалуясь что функция get() не была реализована в ScalaClass:

класс ScalaClass должен быть абстрактным, поскольку: [ошибка] у него есть 1 un членов. [error]/** Как видно из класса ScalaClass, отсутствующие подписи выглядят следующим образом. [ошибка] * Для удобства, они могут использоваться в качестве реализации заглушек. [ошибка] */ [error] def get (x $ 1: Int, x $ 2: Long, x $ 3: java.util.concurrent.TimeUnit): Сообщение = ???

Я подозреваю, что это может быть из-за того, что 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

A Возможно, интерфейс Java должен был иметь 'long' вместо' Long'? –