从scala我需要创建一个java对象,而不是一个方法,它需要一个参数,它是一个通用的接口
java class
public class JavaTest<T> {
public List<T> add(IJavaTest<T> javaTest){
return null;
}
}
java接口
public interface IJavaTest<T> {
String ss();
}
在scala中我实现了这个:
val javaTest = new JavaTest
class TMijavatest[T] extends IJavaTest[T] {
override def ss(): String = ""
}
val foo=new TMijavatest()
但是当我调用add方法时
javaTest.add(foo);
我在intellij中有这个错误: 类型不匹配,预期:IJavaTest [T],实际TMijavatest [Nothing]
使用:
javaTest.add(foo.asInstanceOf);
它编译我,但在执行时我有这个错误:
服务器中发生意外错误。 引起:java.lang.ClassCastException:my.pakage.Test $ TMijavatest $ 1无法强制转换为scala.runtime.Nothing $
如果我像这样生成foo对象:
val foo = new TMijavatest[String]
javaTest.add(foo);
我在intellij中有这个错误: 类型不匹配,预期:IJavaTest [T],实际TMijavatest [String]
我怎么能这样做?谢谢
答案 0 :(得分:1)
您应该实例化JavaTest&amp; TMijavatest类型
val javaTest = new JavaTest[String]
class TMijavatest[T] extends IJavaTest[T] {
override def ss(): String = ""
}
val foo = new TMijavatest[String]
javaTest.add(foo)