Wir haben kürzlich einen Fehler in unserem Code gefunden, der im Wesentlichen mit OOP-Konzepten zusammenhängt.Geben Sie ein Objekt in einen Collection-Typ ein
class ABC
{
String a;
ABC(){
a = "abc";
}
}
public class Main {
static Object listABC() {
List<ABC> listOfABC = new ArrayList<>();
listOfABC.add(new ABC());
return listOfABC;
}
public static void main(String[] args) throws java.lang.Exception {
List<Long> listLong = (List) Main.listABC();
System.out.println(listLong.get(0));
}
}
Ausgabe: ABC @ 642c39d2
Sollte dies nicht eine Laufzeit Ausnahme auslösen? Kann mir jemand in die richtige Richtung weisen, warum nicht dieser Code eine Ausnahme auslöst?
Ihre bestehende Liste ist Typ von und Sie sind es auf lange –
Nimesh
Ja, es keine Laufzeit Ausnahme – rmagon
@rmagar, weil Generika nach dem Kompilieren gegangen sind. Sie erhalten keine "Runtime" -Ausnahme, weil der Compiler für den richtigen Typ sorgt. Wenn bei 'Runtime' etwas in einer anderen Klasse ist, die durch die Generika definiert wird, wird es keine Exposetion geben, da der generische Typ der' List' nicht mehr existiert. – SomeJavaGuy