Ad
Thủ Thuật Công Nghệ

Annotation trong Java là gì? Cùng tìm hiểu chi tiết

Pinterest LinkedIn Tumblr

Trong lập trình Java, các từ khoá thường đi kèm với ký tự @ như @Override, @Deprecated,… Đây được gọi là Annotation. Vậy annotation trong Java là gì? Cấu trúc và chức năng? Hãy cùng Wiki Lanit tìm hiểu về vấn đề này trong bài viết sau đây nhé!

Annotation trong Java là gì?

Annotation trong Java như một nhãn chứa thông tin mô tả thêm, thường được gắn kết với lớp, phương thức, interface hoặc trường để giúp trình biên dịch Java và JVM có thêm thông tin bổ sung và có thể thay thế cho việc sử dụng XML hoặc marker interface.

Java Annotation là gì?
Java Annotation là gì?

Marker interface (còn được gọi là Tagging interface), đó là một loại interface không chứa bất kỳ phương thức hoặc thuộc tính nào. Marker interface cung cấp thông tin về loại đối tượng khi chạy, giúp trình biên dịch và JVM hiểu thêm về đối tượng để thực hiện một số hoạt động hữu ích. Ví dụ về một số marker interface là EventListener, Serializable, Cloneable, RandomAccess,…

Đặc điểm của Java Annotation là gì?

  • Annotation Java bắt đầu bằng @
  • Annotation Java không làm chương trình đã compile thay đổi
  • Annotation hỗ trợ kết nối thông tin với các phần của chương trình như biến, phương thức, constructor và lớp.
  • Annotation Java không chỉ đơn thuần là ghi chú vì chúng có thể ảnh hưởng đến cách trình biên dịch xử lý chương trình.

Cấu trúc của Annotation trong Java 

Một chú thích luôn bắt đầu với dấu @ và tiếp theo là tên của chú thích. Dấu @ cho biết cho trình biên dịch đây là một chú thích.

Ví dụ: @Deprecated

Trong đó: 

  • Dấu @ chỉ đơn giản là cách nói đây là một chú thích.
  • “Deprecated” là tên chú thích.

Mục đích sử dụng của Annotation trong Java

Cuối cùng để hiểu rõ hơn Java Annotation là gì thì bạn cần biết chúng được sử dụng cho mục đích nào:

Chỉ dẫn cho trình biên dịch:

    • Sử dụng để phát hiện lỗi và triệt tiêu cảnh báo.
    • Các chú thích như @Override, @Deprecated, @SuppressWarnings hỗ trợ việc này.

Chỉ dẫn trong lúc biên dịch (Build-time):

    • Công cụ phần mềm có thể sử dụng thông tin từ chú thích để tạo mã nguồn, tệp XML, nén mã biên dịch và nhiều tác vụ khác.

Trong thời gian chạy (Runtime):

      • Mặc dù thông thường không xuất hiện trong mã Java sau khi biên dịch, nhưng có thể xác định trong thời gian chạy bằng Reflection.
      • Sử dụng để đưa ra hướng dẫn cho chương trình trong thời gian chạy.

Phân loại Annotation trong Java 

Dưới đây là một số loại Annotation trong Java được sử dụng phổ biến như sau:

Loại tích hợp để dùng trực tiếp trong code java

@Override 

Annotation @Override được sử dụng khi ghi đè một phương thức trong lớp cha. Nếu không ghi đè chính xác, trình biên dịch sẽ báo lỗi. Mặc dù không bắt buộc, nhưng sử dụng @Override giúp tránh lỗi một cách dễ dàng.

Ví dụ:

public class superExampleNMD {

    public void methodOverride() {

        System.out.println("SupperClass Nguyen Minh Duc");

    }

}

public class ExampleNMD extends superExampleNMD{

    @Override

    public void methodOverride() {

        System.out.println("SubClass Nguyen Minh Duc");

    }

}

public class MainNMD {

    public static void main(String[] args) {

        ExampleNMD ex = new ExampleNMD();

        ex.methodOverride();

    }    

}

Kết quả:

@Deprecated

@Deprecated được sử dụng để ghi chú đối tượng (method, class hoặc field) và biểu thị rằng nên tránh sử dụng nó. Trình biên dịch sẽ cảnh báo nếu chương trình sử dụng những phần được đánh dấu với @Deprecated.

Ví dụ:

@SuppressWarinings

Chúng ta có thể thông báo cho trình biên dịch không in các cảnh báo cụ thể bằng cách sử dụng @SuppressWarnings(“…”). Ví dụ, @SuppressWarnings(“deprecation”) để tắt cảnh báo khi sử dụng phương thức có @Deprecated.

Loại tích hợp để sử dụng trong Annotation Java khác

@Target

Sử dụng để mô tả vị trí áp dụng của một Annotation. Các vị trí này đã được định nghĩa trong enum java.lang.annotation.ElementType:

ElementType Chú Thích
TYPE Class, enum, interface, annotation
FIELD trường (field), bao gồm hằng số enum
METHOD Trên method
PARAMETER Trên parameter
CONSTRUCTOR Trên constructor
LOCAL_VARIABLE Trên biến địa phương
ANNOTATION_TYPE Trên Annotation khác
PACKAGE Trên package

@Retention 

Dùng để mô tả thời gian tồn tại của một Annotation. Có 3 mức nhận thức về thời gian tồn tại, được định nghĩa trong enum java.lang.annotation.RetentionPolicy:

RetentionPolicy Mô Tả
SOURCE Tồn tại trên mã nguồn, trình biên dịch không nhận ra.
CLASS Mức tồn tại này trình biên dịch có thể nhận ra, nhưng máy ảo tại Runtime thì không.
RUNTIME Mức tồn tại lớn nhất, dễ dàng được nhận biết.

@Inherited

Chú thích này chỉ đề xuất rằng nó nên được thêm vào tài liệu Java được tạo bởi các công cụ tạo tài liệu Java.

@Documented

Chú thích nói rằng loại chú thích có thể được chuyển từ lớp cha và mặc định là false. Khi người dùng truy vấn Annotation của lớp con và lớp con không có chú thích cho kiểu này, lớp cha sẽ được truy vấn. Lưu ý: Chú thích này chỉ áp dụng đối với khai báo class.

Kết luận

Trên đây là bài viết trên, Wiki Lanit hy vọng bạn đã có cái nhìn tổng quan về  khái niệm Java Annotation là gì? cũng như cách sử dụng căn bản và Wiki Lanit chúc bạn sẽ sử dụng chúng thật hiệu quả!

Mình là Tú Anh - Hiện mình đang đảm nhận một số mảng trong chiến dịch Marketing tại LANIT. Mình đã có kinh nghiệm nhiều năm trong mảng kinh doanh online, nên rất hy vọng với những kiến thức mình chia sẻ về lĩnh vực này sẽ thật sự hữu ích đối với các bạn.

Comments are closed.