當我將一個String對象添加到向量中時,會發生以下警告。爲什麼?java向量:添加對象時出現警告
TestCollectionsMain.java:14:警告:未經檢查]未選中呼叫至(E)添加作爲原料類型java.util.Vector中 vec.add( 「M」)的 構件;
當我將一個String對象添加到向量中時,會發生以下警告。爲什麼?java向量:添加對象時出現警告
TestCollectionsMain.java:14:警告:未經檢查]未選中呼叫至(E)添加作爲原料類型java.util.Vector中 vec.add( 「M」)的 構件;
從Java 1.5開始,建議您使用這些方法的通用版本。
如果您堅持使用原始類型,您可以放心地忽略該警告。
順便說一句,你可能應該使用ArrayList
,而不是Vector
它有點快,基本上是一樣的。
這將運行,只是忽略警告。
public static void main(String [] args) {
Vector v = new Vector();
v.add("M");
}
這會更好:
public static void main(String [] args) {
List<String> v = new ArrayList<String>();
v.add("M");
}
使用泛型給你兩個好處。
1)幫助您在編譯時檢查,添加到集合的值是相同的類型。
2)幫助您在從集合中獲取值時避免投射。
但是,如果你仍然想要使用非通用版本,你可以自由地這麼做,只是忽略異常,或者如jskggz所說,只是添加一個選項(沒有編譯器錯誤):
@SuppressWarnings("unchecked")
public static void main(String[] args) {
給你的方法。
這是因爲你沒有使用泛型來聲明你的Vector。
試試這個:
List<String> vec = new ArrayList<String>();
vec.add("M");
但我添加一個對象(即字符串),所以它應該接受沒有警告? – JavaUser 2010-06-22 02:36:48
@JavaUser呃...沒有。每個類都從Object延伸出來;你可以添加任何東西,並使用該邏輯表示應該沒有警告。你正在調用一個採用泛型類型的方法,而不是定義該類型的實例;這是什麼觸發警告 – 2010-06-22 02:41:01