如何在Scala中扩展一个扩展另一个类的类型参数的java类?
问题描述:
假设我有延伸的参数化类型B类(参数为C)一个Java类A:如何在Scala中扩展一个扩展另一个类的类型参数的java类?
public class A extends B <C> {
public A (Class<? extends C > data) {
super((Class<C>) data);
}
}
现在让我们说我有不同的Scala类,d,即希望延长类A.
class D extends A {
.... }
不管我试图传递给d类(在声明本身,或在它下面的构造函数,或致电通过超级基本构造函数) - 我仍然得到一个编译错误:
"unspecified value parameters: class [ _ < C ]"
无法找到正确的方式来定义我的斯卡拉类D.
任何情况下,真正的代码是(使用com.fasterxml.jackson):
public class DateTimeDeserializer extends
JodaDeserializerBase<ReadableInstant> {
public DateTimeDeserializer(Class<? extends ReadableInstant> cls) {
super((Class<ReadableInstant>)cls);
}
...
}
和Scala:
class CustomDateTimeDeserializer extends DateTimeDeserializer {}
任何帮助将是伟大的!
答
- 解决 -
发现,该办法做到这一点在Scala中使用 “classOf”(在Java中它的.class)如下:
class A() extends B(classOf[C]) {}
或在我的代码:
class CustomDateTimeDeserializer() extends DateTimeDeserializer(classOf[DateTime]) {
...
}
您需要调整类型参数I guess('+ C')的方差。 – cchantep 2015-04-05 13:22:56