Annotation trong java là một thẻ đại diện cho siêu dữ liệu tức là nó được gắn với lớp, interface, phương thức hoặc các trường để chỉ định một số thông tin bổ sung có thể được sử dụng bởi trình biên dịch java và JVM.
Java annotation được sử dụng để cung cấp thêm thông tin, vì vậy nó là một tùy chọn thay thế cho XML và Marker interface.
Có hai kiểu java annotation:
- Các Annotation được tích hợp sẵn trong java.
- Annotation tùy chỉnh - do người dùng định nghĩa.
Nội dung chính
Các Annotation được thích hợp trong java
Có một số Java Annotation được thích hợp sẵn trong java. Một số Annotation được áp dụng cho code java và một số được áp dụng cho Annotation khác.
Java Annotation được thích hợp sẵn được sử dụng trong code java.
- @Override
- @SuppressWarnings
- @Deprecated
Java Annotation được thích hợp sẵn được sử dụng trong Annotation khác.
- @Target
- @Retention
- @Inherited
- @Documented
Tìm hiểu các annotation được tích hợp sẵn trong java.
1. @Override
Sử dụng annotation @Override để đảm bảo rằng phương thức được nghi đè ở lớp con phải trùng tên với lớp cha, nếu không sẽ báo lỗi biên dịch.
Ví dụ sau có lỗi sai chính tả, nên sẽ bị lỗi biên dịch.
class Animal { void eatSomething() { System.out.println("eating something"); } } class Dog extends Animal { @Override void eatsomething() { System.out.println("eating foods"); } // tên phương thức nên là eatSomething } class TestAnnotation1 { public static void main(String args[]) { Animal a = new Dog(); a.eatSomething(); } }
2. @SuppressWarnings
Annotation @SuppressWarnings: được sử dụng để ngăn chặn các cảnh báo phát hành bởi trình biên dịch.
Ví dụ:
import java.util.ArrayList; class TestAnnotation2 { @SuppressWarnings({ "unchecked", "rawtypes" }) public static void main(String args[]) { ArrayList list = new ArrayList(); list.add("C++"); list.add("Java"); list.add("PHP"); for (Object obj : list) System.out.println(obj); } }
Nếu bạn loại bỏ @SuppressWarnings({ "unchecked", "rawtypes" }) thì trình biên dịch sẽ hiện thị cảnh báo lúc biên dịch vì chúng ta đang sử dụng non-generic collection.
3. @Deprecated
Annoation @Deprecated đánh đấu rằng phương thức này không được công nhận và không nên sử dụng nữa. Nó thông báo cho người dùng rằng nó có thể được gỡ bỏ trong các phiên bản trong tương lai. Vì vậy, tốt hơn là không sử dụng các phương thức như vậy.
class A { void m() { System.out.println("hello m"); } @Deprecated void n() { System.out.println("hello n"); } } class TestAnnotation3 { public static void main(String args[]) { A a = new A(); a.n(); } }
Lúc biên dịch:
Note: Test.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details.
Kết quả:
hello n