2015-04-05 2 views
1

Предположим, у меня есть класс Java, который расширяет параметризованный тип класса В (параметризированный для C):Как расширить класс java, расширяющий типизированный параметр другого класса в Scala?

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

Теперь позволяет сказать, у меня есть другой класс Scala, D, что хочет расширить класс А.

class D extends A { 
    .... } 

Все, что я пытаюсь передать в класс D (в самой декларации, или в CTOR под ним, или позвонив по телефону базовый CTOR через супер) - я все еще получаю ошибку компиляции:

"unspecified value parameters: class [ _ < C ]"

Не удалось найти правильный способ определить мой Scala класс D.

для любого случая, реальный код (используя com.fasterxml.jackson):

public class DateTimeDeserializer extends   
    JodaDeserializerBase<ReadableInstant>  { 
     public DateTimeDeserializer(Class<? extends ReadableInstant> cls) { 
      super((Class<ReadableInstant>)cls); 
    } 
... 
} 

и Ла Скала:

class CustomDateTimeDeserializer extends DateTimeDeserializer {} 

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

+0

Вам нужно отрегулировать дисперсию параметра типа, который я предполагаю ('+ C'). – cchantep

ответ

1

- решаемая -

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

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

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

class CustomDateTimeDeserializer() extends DateTimeDeserializer(classOf[DateTime]) { 
... 
} 
Смежные вопросы