Say .., die Java-Compiler alle Arten Informationen löschen, und ersetzt alle Vorkommen von denen, mit ihren oberen Grenzen (falls angegeben) oder Objekt ..Java Generics - Löschungen Mechanismus
Meine Fragen ist: keine Einblendung von Abgüssen findet hier statt. Casting tritt zu einem späteren Zeitpunkt auf, wenn eine andere Klasse gegen diese Art von Klasse ohne Informationen kompiliert wird, wobei die generische Klasse (je nach Typargument oder anderen Klassenergänzungen) (zum zweiten Mal) neu kompiliert wird und alle Umwandlungen implementiert werden und die Klasse ist bereit für die Laufzeit .., oder?
Danke. Also sind die Umwandlungen wirklich innerhalb der Benutzerklasse, nicht die generische Klasse, richtig? Auch in Bezug auf Ihr Beispiel oben wäre die Umwandlung in String, die explizit dort eingefügt wurde, automatisch vom Java-Compiler eingefügt worden, wenn wir die Liste angegeben haben, richtig? –
Searcherer
@Searcherer Ja, die Umwandlungen sind in der Benutzerklasse. Das Löschen von 'ArrayList's Typparameter ist' Object', aber nur in der Benutzerklasse benötigen Sie einen spezifischeren Typ, daher wird dort gewirkt. Und ja, dieser Cast wird automatisch bei 'ArrayList' eingefügt. Beachten Sie, dass für die 'add'-Methode kein Cast vorliegt. –
Vielen Dank.Ich möchte nur noch eine kleine letzte Frage stellen: In Bezug auf Ihre Anmerkung, dass für die add -Methode keine Umwandlung vorgesehen ist, kickt der Compiler immer noch das Argument gegen die Signatur von add, die je nach type-Parameter variieren kann und somit ungültige Argumente zurückweist . Recht? – Searcherer