07.07 Deprecated

Angenommen, Sie haben eine kleine Bibliothek geschrieben, die bestimmte Funktionalitäten bereit stellt. Diese wird auch regelmäßig gepflegt. Irgendwann fällt Ihnen auf, dass eine bestimmte Methode oder gar eine ganze Klasse veraltet ist, und besser durch eine andere ersetzt werden sollte. Diesen veralteten Code können (bzw. sollten) Sie aber nicht einfach löschen, da bestimmt noch einige Anwendungen auf diese Methoden und Klassen zugreifen. Stattdessen lautet die Lösung für dieses Problem Deprecated.

Was ist Deprecated

Deprecated kennzeichnet Code als veraltet. Dies kann mehrere Gründe haben:

  • Der alte Code ist unsicher, fehlerhaft oder ineffizient
  • Sie haben vor den Code in zukünftigen Versionen zu entfernen
  • Der betreffende Abschnitt wurde unsauber programmiert

Wenn Code als veraltet gekennzeichnet wurde, dann kann dieser Code zwar noch immer verwendet werden, vom Compiler wird aber beim Kompilieren eine entsprechende Warnung ausgegeben. So ist die Abwärtskompatibilität gegeben, wenngleich der Programmierer dennoch darauf aufmerksam gemacht wurde, dass er lieber andere Methoden und Klassen verwenden sollte.

Sie können auch Attribute als deprecated markieren, dies ist aber meistens nicht nötig (es sei denn, dass weitere Informationen enthalten und notwendig wären).

Deprecated vor Java 1.5

Vor dem Erscheinen der Java-Version 1.5 und der damit verbundenen Einführung von Annotations, wurde Code über den JavaDoc-Kommentar als veraltet markiert. Dies kann z. B. so aussehen:

/**
 * @deprecated  As of release 0.9, replaced by {@link #getSomethingCool()}
 */
public ACoolClass somethingCool() {
  return getSomethingCool();
}

Der Nachteil dieser Methode liegt darin, dass nicht jeder Compiler bei diesem Kommentar eine Fehlermeldung ausgibt, da die Information streng genommen nur für die Erstellung der Dokumentation wichtig ist. Sollten Sie den Standard-Compiler von Sun verwenden, wird die entsprechende Warnung jedoch ausgegeben.

Deprecated ab Java 1.5

Seit Java 1.5 können Sie veraltete Codeabschnitte auch mit einer Annotation versehen – @Deprecated. Durch diese Annotation kann jeder Compiler so markierte Klassen oder Methoden erkennen.

@Deprecated
public ACoolClass somethingCool() {
  return getSomethingCool();
}

Wenn Sie eine Dokumentation aus Ihrem Java-Code erstellen, sollten Sie dennoch nicht auf eine Deprecated-Beschreibung im zugehörigen JavaDoc-Kommentar verzichten.

Schreibe einen Kommentar