Ich versuche, etwas über die Verwendung von generischen Typen zu lernen und habe etwas seltsames bemerkt, als ich mit einigen Codezeilen experimentierte.Java - Generische Typen und Sammlungen
Der erste Teil des Codes ist innerhalb einer Klasse mit der Bezeichnung "A":
public void func(int k, List list) {
list.add(9);
list.add(true);
list.add("a string");
}
Das zweite Stück des Codes ist in einer anderen Klasse, in der Hauptfunktion:
List<Integer> arr = new ArrayList<Integer>();
arr.add(14);
System.out.println(arr.toString());
a.func(8, arr);
System.out.println(arr.toString());
des Laufes Code-Ergebnisse in diesen Linien gedruckt werden:
[14]
[14, 9, true, eine Zeichenfolge]
Die seit arr
mir ziemlich verwirrt bekam eine ArrayList
vom Typ Integer
, wie es Objekte vom Typ boolean
und String
enthält? Gibt es eine Transformation der Liste in der Funktion func
zu einem Rohtyp (was bedeutet, dass es vom generischen Typ Object
wird)? Und wenn ja, wie ist das möglich, weil Sie das zum Beispiel nicht tun können: List<Integer> arr = new ArrayList<Object>();
?
Würde mich etwas Klärung zu diesem Thema, vielleicht wird es mir helfen, dieses Thema der generischen Arten besser zu erfassen. Vielen Dank!
Sie sollten lesen Sie über [raw types] erhalten (https://docs.oracle.com/javase/tutorial/ java/generics/rawTypes.html) und auch [Haufenverschmutzung] (https://docs.oracle.com/javase/tutorial/java/generics/nonRefabledVarargsType.html#heap_pollution). – Flown