我看了其他類型轉換的Java泛型問題,我仍然感到困惑。嵌套類型的不可轉換類型
我有下面的類層次結構:WeightedThing<T>
(只是增加了一個重一些隨機型)和一個自定義Vector
類的WeightedVector
(不,WeightedVector
不僅僅是WeightedThing<Vector>
)是一個子類。
我想做最近鄰居搜索,並返回給定查詢向量及其距離的最接近向量列表。對於這一點,我定義了一個search
方法:
public List<WeightedThing<? extends Vector>> search(Vector, int limit) {...}
希望我可以做
List<WeightedThing<WeightedVector>> neighbors = (List<WeightedThing<WeightedVector>>)search(query, 1);
這不工作(的IntelliJ不將其標記爲錯誤,但Sun的jdk7u10編譯它Mac OS X失敗)。與Vector
都沒有調用相同的功能。 我可以強制它通過添加一個upcast到Object
進行編譯,但這看起來很可怕。
這樣做的目的是讓我可以搜索並添加任何類型的矢量,但如果我知道我只添加了WeightedVectors,我想將結果轉換回WeightedVectors。
此內容是否有用? http://stackoverflow.com/questions/2522155/java-generics-parameters-with-base-of-the-generic-parameter – INS
感謝您的建議,但不是真的,請參閱下面我對Ale E的回答的評論。 –