2015-04-05 95 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]) { 
... 
}