我在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
答案 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")