×

Annotation trong Java là gì?

Annotation trong Java là một hình thức metadata cung cấp dữ liệu về chương trình nhưng không phải là một phần của logic chương trình. Được giới thiệu từ Java 5, annotations cho phép bạn thêm thông tin bổ sung vào code mà có thể được sử dụng bởi compiler, thời gian chạy, hoặc các công cụ phân tích code khác.

Cách sử dụng:

Annotations thường được sử dụng để:

  1. Cung cấp thông tin cho compiler: Ví dụ, @Override cho biết phương thức nào được ghi đè, giúp compiler phát hiện lỗi nếu phương thức đó không tồn tại trong superclass.
  2. Biên dịch thời gian và xử lý thời gian chạy: Ví dụ, các framework như Spring và Hibernate sử dụng annotations để xác định cách một class nên được xử lý hoặc cấu hình.
  3. Được sử dụng bởi các công cụ phát triển phần mềm: Các công cụ có thể sử dụng annotations để tạo ra code, XML files, hoặc các tệp khác dựa trên thông tin trong annotations.

Các loại Annotations:

Java cung cấp các annotations tích hợp sẵn như:

  • @Override
  • @Deprecated
  • @SuppressWarnings
  • @FunctionalInterface

Ngoài ra, bạn cũng có thể tạo custom annotations của riêng mình.

Tạo Custom Annotation:

Để tạo một custom annotation, bạn sử dụng từ khóa @interface, và bạn có thể định nghĩa các phần tử trong nó. Ví dụ:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME) // Cho biết annotation được giữ lại ở runtime
@Target(ElementType.METHOD) // Annotation có thể được áp dụng cho phương thức
public @interface MyAnnotation {
    String description();
}

Sử dụng Custom Annotation:

public class MyClass {

    @MyAnnotation(description = "This is an example method")
    public void myMethod() {
    }
}

Annotations trong Java là một công cụ mạnh mẽ giúp tăng cường tính năng của code mà không làm thay đổi chính nó. Chúng cung cấp một cách linh hoạt để thêm metadata vào chương trình, cho phép các framework, libraries, và công cụ tương tác với code của bạn một cách thông minh hơn.

Comments