我有我自己的通用類,它是這樣的不工作我例化了一些類型爲C1的對象:集合通用對象如預期
C1<Integer> a;
C1<Float> b;
C1<String> c;
...
後來我把它們放在列表中;
list.add(a);
list.add(b)
...
接下來的事情我做的是這樣的: 疊代表這樣做:
list.get(i).setValue(obj);
其中obj是Object類型的變量,它可以是一個整數,浮點數等
現在存在的問題是,從列表返回的C1實例(讓我們稱之爲c1)被定義爲這樣:
C1<Type1>
Java將允許這樣的:
c1.setValue(val2);
其中VAL2的類型是Type2且類型2不等於Type1和是不是即使在同一類層次結構(除了對象OFC)!
編輯: 忘了問這個問題:) 我如何讓setValue「類型安全」,當我上面這樣做的方式訪問?
嗯,是的,我猜這是問題,但我希望我的集合允許所有C1的無論Type1是什麼(即Type1是Object類型)。我希望這種類型能夠解決我訪問集合成員時的真實情況。我可以用反射來做這件事,但那是最後的手段...... – Paul
你不能兩面都有。如果你想讓這個集合保存任何類型的C1,那麼你不能讓編譯器在編譯時確保類型安全。不過,您可以在運行時使用反射進行檢查。 – Chris