Mamy następujący, działający kod:
import java.util.LinkedList; import java.util.List; public class GenericsTest { public static void main(String[] args) { List<Object> list = new LinkedList<Object>(); list.add("A"); addToList("B", list); System.out.println(list); } public static void addToList(Object element, List list) { list.add(element); } }
W metodzie addToList pojawiają się ostrzeżenia dotyczące bezpieczeństwa typów. KOd kompiluje się i działa prawidłowo.
Niestety próba wprowadzenia typów generycznych w tej metodzie kończy się błędem kompilacji:
import java.util.LinkedList; import java.util.List; public class GenericsTest { public static void main(String[] args) { List<Object> list = new LinkedList<Object>(); list.add("A"); addToList("B", list); System.out.println(list); } public static void addToList(Object element, List<?> list) { list.add(element); } }
Co jest przyczyną problemu? Jak można poprawić kod?