Java @Depated Annotation

1. Ikhtisar

Dalam tutorial singkat ini, kita akan melihat API yang tidak lagi digunakan di Java dan cara menggunakan anotasi @Deprecated .

2. Anotasi @Deprecated

Saat proyek berkembang, API-nya berubah. Seiring waktu, ada konstruktor, bidang, jenis, atau metode tertentu yang kami tidak ingin orang gunakan lagi.

Alih-alih merusak kompatibilitas mundur API proyek, kita bisa memberi tag elemen ini dengan anotasi @Deprecated .

@Deprecated mengatakan pengembang lain yang yang elemen ditandai seharusnya tidak lagi digunakan . Biasanya juga menambahkan beberapa Javadoc di sampinganotasi @Deprecated untuk menjelaskan alternatif apa yang lebih baik yang melayani perilaku yang benar:

public class Worker { /** * Calculate period between versions * @deprecated * This method is no longer acceptable to compute time between versions. * 

Use {@link Utils#calculatePeriod(Machine)} instead. * * @param machine instance * @return computed time */ @Deprecated public int calculate(Machine machine) { return machine.exportVersions().size() * 10; } }

Ingatlah bahwa compiler hanya menampilkan peringatan API yang tidak digunakan lagi jika elemen Java yang dianotasi digunakan di suatu tempat dalam kode. Jadi, dalam hal ini hanya akan ditampilkan jika ada kode yang disebut metode hitung .

Selain itu, kami juga dapat mengomunikasikan status deprecated dalam dokumentasi dengan menggunakan tag @deprecated Javadoc .

3. Atribut Opsional Ditambahkan di Java 9

Java 9 menambahkan beberapa atribut opsional ke anotasi @Deprecated : sejak dan forRemoval .

The sejak atribut membutuhkan string yang memungkinkan kita menentukan di mana versi elemen itu usang. Nilai defaultnya adalah string kosong.

Dan forRemoval adalah boolean yang memungkinkan kita menentukan apakah elemen tersebut akan dihapus pada rilis berikutnya. Nilai defaultnya salah:

public class Worker { /** * Calculate period between versions * @deprecated * This method is no longer acceptable to compute time between versions. * 

Use {@link Utils#calculatePeriod(Machine)} instead. * * @param machine instance * @return computed time */ @Deprecated(since = "4.5", forRemoval = true) public int calculate(Machine machine) { return machine.exportVersions().size() * 10; } }

Sederhananya, penggunaan di atas berarti bahwa penghitungan sudah tidak digunakan lagi sejak 4.5 dari pustaka kami dan dijadwalkan untuk dihapus pada rilis utama berikutnya.

Sangat membantu bagi kami untuk menambahkan ini karena kompiler akan memberi kami peringatan yang lebih kuat jika ditemukan bahwa kami menggunakan metode dengan nilai itu.

Dan sudah ada dukungan dari IDE untuk mendeteksi penggunaan metode yang ditandai dengan forRemoval = true. IntelliJ, misalnya, menyerang kode dengan garis merah, bukan hitam.

4. Kesimpulan

Dalam artikel singkat ini, kami melihat cara menggunakan anotasi @Deprecated dan atribut opsionalnya untuk menandai kode yang seharusnya tidak lagi digunakan.

Kode sumber lengkap untuk contoh dapat ditemukan di GitHub.