如何扩展在Scala中扩展另一个类的类型参数的java类?

时间:2015-04-05 13:16:21

标签: java scala oop inheritance parameterized-types

假设我有一个Java类A,它扩展了B类的参数化类型(为C参数化):

public class A extends B <C> {
    public A (Class<? extends C > data) {
        super((Class<C>) data);
    }
}

现在假设我有一个不同的Scala类D,希望扩展A类。

class D extends A {
    .... }

无论我尝试传递给D类(在声明本身,或在它下面的Ctor,或通过super调用基本Ctor) - 我仍然会收到编译错误:

  

&#34;未指定的值参数:class [_&lt; C]&#34;

无法找到定义我的Scala类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 {}

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

- 已解决 -

发现在Scala中使用“classOf”(在java中是.class)的方法如下:

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

或在我的代码中:

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