Как расширить Java-класс, расширяющий типизированный параметр другого класса в Scala?

1

Предположим, что у меня есть класс 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 ниже него, или путем вызова базы Ctor через super) - я все равно получаю ошибку компиляции:

"неопределенные значения параметров: class [_ <C]"

Не удалось найти правильный способ определения моего класса 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 {}

Любая помощь будет замечательной!

  • 0
    Вам нужно настроить дисперсию параметра типа, я думаю ( +C ).
Теги:
oop
inheritance

1 ответ

1

- SOLVED -

Обнаружено, что способ сделать это в Scala использует "classOf" (в java это.class) следующим образом:

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

или в моем коде:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню