Ich benutze Generika in Java, aber es ist nicht so gut wie ich dachte
%Vor% All das kompiliert und funktioniert. Wenn ich einen Wert von list
bekomme, wird eine Ausnahme ausgelöst.
Kann es in Java 6 sicherer sein?
Ich schlage vor, den Standard Collections
:
arbeite dann nur an checked
. Ein ClassCastException
wird beim Einfügen einer nicht kompatiblen Instanz - früher (also besser) als zuvor (d. H. Beim Abrufen) - ausgegeben.
N.B. Überprüfen Sie Ihre Compiler-Nachrichten, ich würde wetten, dass Sie einige Warnungen gedruckt haben, die unsicheren / ungeprüften Code erwähnen. Ihr Problem ist genau das, was der Compiler Ihnen zu sagen versucht. Wenn Sie die Signatur von add
kontrollieren, sollten Sie sie generisch machen - das gibt Ihnen Sicherheit beim Kompilieren.
Ich glaube nicht. Wenn diese statische add()
-Methode eine Tatsache des Lebens ist (etwas, das Sie nicht kontrollieren), können Sie nicht viel tun, da Java-Generika so implementiert werden, dass sie mit Java & lt; kompatibel sind. 5.0.
Wenn Sie jedoch die Signatur der Methode add()
ändern können, können Sie die Typprüfung einfach erzwingen, sodass Sie Compilerfehler für den Code in Ihrer main()
-Methode erhalten: