Sammlung sicherer als Standardliste mit generischem Typ?

8

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?

    
Kalamar Obliwy 08.06.2013, 13:10
quelle

2 Antworten

14

Ich schlage vor, den Standard Collections :

zu verwenden %Vor%

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.

%Vor%     
emesx 08.06.2013, 13:14
quelle
3

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:

%Vor%     
Costi Ciudatu 08.06.2013 13:16
quelle

Tags und Links