Nie rozumiem pytania. Przecież widać gołym okiem.
Czytaj:
https://docs.oracle.com/javase/tutorial/extra/generics/subtype.html
https://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html
first jest generyczna, tzn przyjmuje i zwraca kolekcje dowolnego typu, pozwala na dodawanie do kolekcji bo będzie wiadomo dokładnie z jakim typem pracujesz
second przyjmuje kolekcje Objectów i zwraca też kolekcje Objectów. Warto rozumieć że w javie np. List<Object>
wcale nie jest związane z List<InnaKlasa>
. Nie możesz listy obiektów InnaKlasa
przypisać do listy Objectów
.
third łyknie wszystko, w przeciwieństwie do second, ale masz tam "niewiadomy" typ, więc masz wewnatrz metody dostępne tylko metody z Object no i nie możesz nic do tej kolekcji dodawać! no bo nie wiadomo jakiego typu są tam obiekty!
fourth łyka wszystkie kolekcje obiektów które rozszerzają Object, czyli generalnie wszystkie możliwe kolekcje. Taka konstrukcja jest mało przydatna, ale gdyby tam było np. ? extends Comparable
to zaczyna mieć dużo większy sens ;] ale znów nie da sie do tych kolekcji nic dodać, bo nie wiadomo jakie obiekty są w kolekcji przechowywane, wiemy tylko że są jakąś podklasą zadanego typu ;]