Java @Deprecated Annotation

1. Overzicht

In deze korte zelfstudie bekijken we verouderde API's in Java en hoe u de @Verouderd annotatie.

2. Het @Verouderd Annotatie

Naarmate een project evolueert, verandert de API ervan. In de loop van de tijd zijn er bepaalde constructors, velden, typen of methoden waarvan we niet willen dat mensen ze meer gebruiken.

In plaats van de achterwaartse compatibiliteit van de API van het project te doorbreken, kunnen we deze elementen taggen met de @Verouderd annotatie.

@Verouderd vertelt andere ontwikkelaars datde gemarkeerd element zou niet langer moeten zijn worden gebruikt. Het is gebruikelijk om ook wat Javadoc toe te voegen naast het @Verouderd annotatie om uit te leggen wat een beter alternatief zou zijn dat het juiste gedrag dient:

public class Worker {/ ** * Bereken periode tussen versies * @deprecated * Deze methode is niet langer acceptabel om tijd tussen versies te berekenen. * 

Gebruik in plaats daarvan {@link Utils # berekenPeriod (Machine)}. * * @param machine-instantie * @return berekende tijd * / @Deprecated openbare int berekenen (Machine-machine) {return machine.exportVersions (). size () * 10; }}

Onthoud dat een compiler alleen de verouderde API-waarschuwing weergeeft als het geannoteerde Java-element ergens in de code wordt gebruikt. Dus in dit geval zou het alleen worden weergegeven als er code was die de berekenen methode.

Ook, we kunnen de verouderde status ook in de documentatie communiceren door Javadoc te gebruiken @verouderd label.

3. Optionele attributen toegevoegd in Java 9

Java 9 voegt enkele optionele attributen toe aan het @Verouderd annotatie: sinds en forRemoval.

De sinds attribuut vereist een string waarmee we kunnen bepalen in welke versie het element is verouderd. De standaardwaarde is een lege tekenreeks.

En forRemoval is een boolean waarmee we kunnen specificeren of het element in de volgende release zal worden verwijderd. De standaardwaarde is vals:

public class Worker {/ ** * Bereken periode tussen versies * @deprecated * Deze methode is niet langer acceptabel om tijd tussen versies te berekenen. * 

Gebruik in plaats daarvan {@link Utils # berekenPeriod (Machine)}. * * @param machine-instantie * @return berekende tijd * / @Deprecated (sinds = "4.5", forRemoval = true) openbare int berekenen (Machine machine) {return machine.exportVersions (). size () * 10; }}

Simpel gezegd, het bovenstaande gebruik betekent dat berekenen is verouderd sinds 4.5 van onze bibliotheek en staat gepland voor verwijdering in de volgende grote release.

Het is handig voor ons om dit sindsdien toe te voegen de compiler zal ons een sterkere waarschuwing geven als het vaststelt dat we een methode met die waarde gebruiken.

En er is al ondersteuning van IDE'som het gebruik van een methode gemarkeerd met te detecteren forRemoval = waar. IntelliJ haalt bijvoorbeeld de code door met een rode lijn in plaats van een zwarte.

4. Conclusie

In dit korte artikel hebben we gezien hoe u de @Verouderd annotatie en zijn optionele attributen om code te markeren die niet langer gebruikt mag worden.

De volledige broncode voor de voorbeelden is te vinden op GitHub.