2015-04-05 91 views
1

假设我有延伸的参数化类型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 {} 

任何帮助将是伟大的!

+0

您需要调整类型参数I guess('+ C')的方差。 – cchantep 2015-04-05 13:22:56

回答

1

- 解决 -

发现,该办法做到这一点在Scala中使用 “classOf”(在Java中它的.class)如下:

class A() extends B(classOf[C]) {} 

或在我的代码:

class CustomDateTimeDeserializer() extends DateTimeDeserializer(classOf[DateTime]) { 
... 
}