Update von Eclipse Ganymede (3.4.1) nach Helios: neue Warnings tauchen im Code auf

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich habe kürzlich meine Eclipse Version von Ganymede (3.4.1) nach Helios aktualisiert. Jetzt zeigt er mir Warnings an, die vorher nicht da waren, z.B. das hier:

Java:
@SuppressWarnings( "unchecked" )
public class MyClass {
    private List data;
}

Code:
List is a raw type. References to generic type List<E> should be parameterized

Natürlich ist das Warning ansich korrekt, aber ich habe oben ja das "@SuppressWarnings" stehen. In der alten Eclipse Version hat es gereicht, um das Warning zu unterdrücken. Jetzt muss man es anscheinend direkt an das Feld schreiben, ist meine Annahme korrekt?

Es macht natürlich Sinn, die "@SuppressWarnings" dort hinzusetzen, wo sie benötigt werden (Vertical Distance), aber ich fand es schon nett - wenn ich eine ganze Klasse habe, die z.B. Java 1.4 kompatibel sein soll, kann ich die Warnings mit nur einem "@SuppressWarnings" an der Klasse ausblenden.

Ist das jetzt eine Änderung von Eclipse, einem JDK Update oder woher kommt diese "Änderung"?


Danke!
 
Zuletzt bearbeitet:
Der richtige Parameter für @SuppressWarnings wäre in diesem Fall "rawtypes". "unchecked" unterdrückt Warnungen für unsichere Casts.
 
Ich vermute eher, dass du vorher in den Settings(Workspace oder Projekt-Settings, eigentlich egal) eingestellt hast, dass er den 1.4-Compiler verwenden soll und durch das Update wurde das anscheinend auf 1.6-Compiler gestellt wodurch du jetzt diese Warnings bekommst, denn Eclipse selbst generiert ja keine Warnings, es leitet nur die weiter, die es vom Compiler bekommt.
Wenn deine Klasse 1.4-kompatibel sein soll, dann würde ich dir auch empfehlen den 1.4er-Compiler erneut einzustellen um die Kompabilität zu gewährleisten.

Gruß
Matt
 
Der Compiler kommt aber von eclipse und ändert sich mit jeder eclipse-Version :)
Dadurch ändern sich auch die Einstellungen. Mit Java 1.4 wäre der obige Code ja richtig.

@DarthShader
Ich würde, wenn möglich und du sicher weißt welcher Typ da raus kommt, diesen da auch angeben und dann zur Not die Warnung zum casten für die Zeile unterdrücken. Sonst zieht sich das durch die ganze Anwendung und es wird nie auf neue wichtige Sprachfeatures umgestellt.

(Autoboxing lasse ich aber lieber weg :D)

P.S.: eclipse hat Möglichkeiten einem bei der Umstellung etwas zu helfen :)
 
Hallo,

vielen Dank für Eure Antworten!

In meinem "alten" Eclipse hatte ich Version 1.6 eingestellt, da muss sich also was am Eclipse Compiler geändert haben. Der Tipp mit dem "rawtypes" ist natürlich völlig richtig - und ich sehe auch gerade, dass die Angabe an der Klasse, um in einem Schwung die Warnings los zu werden, immernoch funktioniert :) Ich weiß, dass dies natürlich nicht empfehlenswert ist, aber es gibt noch Ausnahmen, bei denen man das durchaus tun kann.

Also nochmals danke für Eure Hilfe!
 
Wenn du den Typ nicht kennst, kannst du die Warnung auch umgehen, indem du als Typ "?" angibst.

Java:
List<?> objects = new List<?>();
 
Zurück