Java 9 @Deprecated Annotation erweitert: forRemoval & since Attribute
Hintergrund
@Deprecated existiert seit Java 5, war aber ein reiner Marker ohne Metadaten. Java 9 fügt zwei optionale Attribute hinzu:
forRemoval()–boolean, Defaultfalse.true= Element ist für Entfernung in einem zukünftigen Release geplant.since()–String, Default"". Version, in der das Element deprecated wurde.
Syntax
@Deprecated(since = "9", forRemoval = true)
public void alteMethode() { ... }
Compiler & Tooling Support
- Compiler warnt bei Nutzung deprecated Elemente (wie zuvor).
- Bei
forRemoval=trueoft striktere Warnungen (z. B.-Xlint:removal). - IDE/Build-Tools (Maven, Gradle, SonarQube) können Deprecation-Policies basierend auf diesen Attributen durchsetzen.
- Javadoc zeigt die Attribute prominent an.
Beispiele aus dem JDK
Boolean(String) – deprecated seit Java 9, für Removal markiert
@Deprecated(since = "9", forRemoval = true)
public Boolean(String s) { ... }
Begründung: Parser-Logik fehleranfällig; Alternative: Boolean.valueOf(String) oder Boolean.parseBoolean(String).
System.runFinalizersOnExit(boolean) – deprecated seit 1.2, forRemoval=true
@Deprecated(since = "1.2", forRemoval = true)
public static void runFinalizersOnExit(boolean value) { ... }
Gefährlich: Führt Finalizer in laufenden Threads aus → Deadlocks, Datenkorruption.