使用Scala中的泛型调用Java静态方法
我有一个Java方法的形式使用Scala中的泛型调用Java静态方法,java,scala,Java,Scala,我有一个Java方法的形式 public interface JavaInterface< T extends A >{ static < T extends A > JavaInterface< T > callThis(){ //I want to call this in scala } } 但我得到一个错误,告诉我它“不是一个值”。如何在Scala中调用该静态方法?您需要: val
public interface JavaInterface< T extends A >{
static < T extends A > JavaInterface< T > callThis(){
//I want to call this in scala
}
}
但我得到一个错误,告诉我它“不是一个值”。如何在Scala中调用该静态方法?您需要:
val x = JavaInterface.callThis[SomeClass]()
静态方法参数化的是方法,而不是类型。现在的代码假设
JavaInterface
是一个具有nilaryapply
方法的对象,该方法返回另一个具有callThis()
方法的对象。为此,您的代码必须如下所示(在Scala中):
trait JavaInterface[T]{
def callThis()=println(“foobar”)
}
对象接口{
def apply[T您假设在伴生对象中有静态方法,可以像在Java.ClassName.methodname中一样使用。我想他想从Scala代码中调用该Java方法。请提供一个完整的示例,说明您正在执行的操作,包括您收到的完整错误消息。
val x = JavaInterface.callThis[SomeClass]()
trait JavaInterface[T] {
def callThis() = println("foobar")
}
object JavaInterface {
def apply[T <: JavaInterface[T]] = new JavaInterface[T] {}
}