× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Annotation trong Java - Nằm lòng cách sử dụng Annotation

14/04/2021 06:59

Trong quá trình làm việc với Java, chúng ta sẽ bắt gặp nhiều ký hiệu bắt đầu bằng @ trong các dòng code. Những ký tự này được gọi là Annotation trong Java. Nếu bạn chưa hiểu rõ khái niệm và chức năng của nó? Chúng ta sẽ cùng tìm hiểu ngay trong bài viết dưới đây.

Khái niệm về Annotation trong Java

Annotation trong Java là một  loại thẻ đại diện cho siêu dữ liệu hoặc thông tin đính kèm với lớp, giao diện, phương thức hoặc trường để hiển thị một số thông tin bổ sung và trình biên dịch và JVM có thể sử dụng.

Mặc dù Annotation không phải là một phần của mã Java nhưng chúng cho phép lập trình viên thêm thông tin về siêu dữ liệu vào mã nguồn của mình. Annotation không ảnh hưởng trực tiếp đến hoạt động của mã mà chúng chú thích và không ảnh hưởng đến việc thực hiện chương trình. Chú thích cung cấp thông tin bổ sung về một chương trình.

Đặc điểm của Annotation trong Java

  • Annotation bắt đầu bằng “@”
  • Annotation không thay đổi hành động hoặc thực thi của một chương trình đã biên dịch
  • Chú thích giúp liên kết siêu dữ liệu hoặc đưa thông tin đến các thành phần của chương trình như lớp, biến instance, giao diện, phương thức,...

Ví dụ về Java Annotation

class Base {

  public void display() {

    System.out.println("Base class display() method");

  }

}

public class Derived extends Base {@Override

  public void display(int x) {

    System.out.println("Derived class display(int) method");

  }

  public static void main(String args[]) {

    Derived obj = new Derived();

    obj.display();

  }

}

Output

error: method does not override or implement a method from a supertype

@Override

Nếu chúng ta xóa tham số (int x) khỏi phương thức hoặc nếu chúng ta xóa chú thích @override khỏi mã, thì chương trình biên dịch tốt. Đầu ra sẽ là:

Base class display() method

>>> Đọc thêm: Đa hình trong Java

Các loại Annotation trong Java

Có 5 loại Annotation trong Java:

5 loại Annotation trong Java

5 loại Annotation trong Java

Marker Annotations  trong Java

Mục đích duy nhất của Marker Annotation là để đánh dấu một khai báo. Các chú thích đánh dấu không chứa baaft ký thành viên nào và không chứa bất kỳ dữ liệu nào. @override là một ví dụ về Marker Annotation.

Single Value Annotations  trong Java

Chú thích giá trị đơn chỉ chứa một thành viên. Chúng cho phép một dạng viết tắt xác định giá trị thành viên. Khi chúng ta áp dụng chú thích này, chúng ta chỉ cần chỉ định giá trị cho thành viên đó mà không cần chỉ định tên thành viên. Tuy nhiên, để sử dụng cách viết tắt này phải có một giá trị cho tên của thành viên.

Ví dụ @TestAnnotation((“testing”)

Full Annotations  trong Java

Chú thích đầy đủ bao gồm nhiều thành viên/ tên, giá trị và cặp dữ liệu.

Ví dụ: @TestAnnotation (owner = ”Rahul”, value = ”Class DataFlair”)

Type Annotations trong Java

Type Annotations có thể ứng dụng cho bất kỳ nơi nào sử dụng type. Ví dụ, nếu chúng ta muốn  chú thích return type của một phương thức, chúng ta có thể khai báo chú thích này bằng @targer annotation.

Repeating Annotations trong Java

Chú thích lặp lại trong Java là chú thích được áp dụng nhiều lần cho một mục. Các chú thích lặp lại phải được chú thích bằng chú thích @Repeatable, có trong gói java.lang.annotation. Giá trị của chú thích này chỉ định laoij vùng chứa cho chú thích có thể lặp lại. Do đó, để tạo một chú thích có thể lặp lại, chúng ta cần tạo chú thích vùng chứa sau đó chỉ định loại chú thích làm đối số cho chú thích @repeatable 

>>> Tham khảo: Khóa học lập trình Java

Predefined Annotation trong Java - Chú thích được xác định trước trong Java

Có 6 loại chú thích tích hợp trong Java như sau:

6 loại chú thích tích hợp trong Java

6 loại chú thích tích hợp trong Java

@Override -  Annotation trong Java

Chúng ta nên sử dụng @Override khi ghi đè một phương thức trong lớp con để đánh dấu phương thức đó. Điều này cung cấp khả năng dễ đọc hơn với mã và tránh các vấn đề bảo trì như bạn phải thay đổi  ký hiệu trong các lớp con (nới sử dụng các annotation này) trong khi thay đổi phương thức ký hiệu của lớp cha nếu không trình biên dịch sẽ đưa ra lỗi biên dịch. Điều này rất khó để theo dõi khi bạn chưa sử dụng chú thích này.

@Deprecated - Annotation  trong Java

Chú thích @Deprecated cho biết rằng một lớp, phương thức hoặc trường được đánh dấu là 'không được dùng nữa' và chúng không còn được sử dụng nữa. Trình biên dịch đưa ra một thông báo cảnh báo bất cứ khi nào có việc sử dụng lớp, phương thức hoặc trường không được dùng nữa được đánh dấu bằng chú thích @Deprecated trong chương trình. Khi một phần tử không được dùng nữa, cần phải ghi lại chúng bằng thẻ Javadoc @deprecated. Bạn cần lưu ý rằng có sự khác biệt giữa @Deprecated và @deprecated. @deprecated dành cho mục đích tài liệu và @Deprecated là dành cho chú thích.

@SuppressWarning

Annotation này hướng dẫn trình biên dịch bỏ qua các cảnh báo cụ thể. Ví dụ trong đoạn code dưới đây, chúng ra đang gọi một phương thức không được dùng nữa nên trình biên dịch sẽ tạo một cảnh bảo, tuy nhiên annotation @SuppressWarning sẽ ngăn chặn các cảnh báo này.

class Test {@Deprecated

  public void display() {

    System.out.println("display() method of Test class");

  }

}

public class SuppressWarningTest {@SuppressWarnings({

    "checked",

    "deprecation"

  })

  public static void main(String args[]) {

    DeprecatedTest obj = new DeprecatedTest();

    obj1.display();

  }

}

Output

display() method of Test class

@Documented Annotations trong Java

@Documented Annotations là một annotation cho biết công cụ cần phải ghi chú bằng tài liệu và cho phép các công cụ như Javadoc xử lý nó và bao gồm thông tin loại chú thích trong tài liệu được tạo.

@Target

Thiết kế của @Target cho chúng ta sử dụng chúng làm chú thích cho một chú thích khác. Nó nhận một đối số và đối số này là một giá trị không đổi từ kiểu liệt kê ElementType.

@Inherited

Chúng ta chỉ có thể sử dụng trên khai báo chú thích. Nó chỉ ảnh hướng đến các chú thích được sử dụng trên khai báo lớp. Chú thích này làm cho lớp con kế thừa chú thích cho một lớp cha. Do đó, bất cứ khi nào có yêu cầu đối với lớp con cho một chú thích cụ thể và nếu chú thích đó không có trong lớp con, nó sẽ kiểm tra trong lớp cha của nó. Nếu chú thích đó có trong lớp cha và được chú thích bằng inherited thì nó sẽ trả về chú thích đó. 

 

Kết luận: Bài viết trên đã giới thiệu về Annotation trong Java cùng một số loại Annotation thường được sử dụng. Hy vọng bạn đã hiểu rõ về Annotation trong Java. Cùng tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại T3H.