-1
任何人都可以讓我知道爲什麼這不起作用?Java泛型下行
List<? super Person> list = new ArrayList<>();
list.add(new Object());
我的理解是變量列表可以保存任何值,只要它是Person的超類。 Object絕對是Person的超類,那麼爲什麼它不能被添加到列表中?
任何人都可以讓我知道爲什麼這不起作用?Java泛型下行
List<? super Person> list = new ArrayList<>();
list.add(new Object());
我的理解是變量列表可以保存任何值,只要它是Person的超類。 Object絕對是Person的超類,那麼爲什麼它不能被添加到列表中?
假設你有一個類層次結構Object -> Movable -> Person
,並在這種情況下List<? super Person>
可以指向:
Movable
(List<Movable>
)或Object
(
List<Object>
)
你不知道什麼類型的元素(Movable
或Object
)列表將在運行時恰好具有(泛型是編譯時現象)。
這就是在這種情況下不允許插入的原因,因爲它可能最終在運行時將Object
添加到Movable
列表中。所以黃金法則是Producer Extends Consumer Super
。