2012-02-08 39 views
0

我有以下構造函數的類:轉換集合<MyType>到收藏<Object>

public UniqueField(Collection<Object> items) { 
     this.items=items; 
} 

Collection<Object>背後的想法是,我將能夠使用Collection<OtherType>

在做:

Collection<OtherType> collection=... 
new UniqueField(collection); 

我越來越無效參數的編譯錯誤。我怎樣才能解決這個問題?

回答

4

你必須用這個代替

public UniqueField(Collection<? extends Object> items) { 
     this.items=items; 
} 

或?因爲它等於 「?擴展對象」

public UniqueField(Collection<?> items) { 
     this.items=items; 
} 

你可以看到here的原因

0

您可以使用:

public UniqueField(Collection<?> items) { 
     this.items=items; 
} 

或:

public UniqueField(Collection<? super OtherType> items) { 
     this.items=items; 
} 

或簡單地說:

public UniqueField(Collection<OtherType> items) { 
    this.items=items; 
} 
相關問題