可能重複:
What’s the difference between <?> and <? extends Object> in Java Generics?列表<?> vs List <?擴展對象>
我發現List<?>
,並以同樣的方式List<? extends Object>
行爲。至於我,他們之間沒有區別。如果我不對,你能解釋一下嗎?
import java.util.ArrayList;
import java.util.List;
public class TestClass {
static void func1(List<?> o, Object s) {
o.add(null); // only null
o.add(s); // wrong
o.get(0); // OK
}
static void func2(List<? extends Object> o, Object s) {
o.add(null); // only null
o.add(s); // wrong
o.get(0); // OK
}
public static void main(String[] args) {
func1(new ArrayList<String>(), new Integer(1));
func2(new ArrayList<String>(), new Integer(1));
List<? extends Object> list1 = new ArrayList<Object>();
List<?> list2 = new ArrayList<Object>();
List<? extends Object> list3 = new ArrayList<String>();
List<?> list4 = new ArrayList<String>();
}
}
沒有什麼區別。 'extends Object'是多餘的,否則就像寫'class F extends Object'一樣。 –
我敢打賭,它們是等價的,因爲Java中的所有類都隱式擴展了'Object'。 – murgatroid99
沒有什麼區別,這是語言設計/語法的結果。 – nullpotent