Chú thích Java

Trong hướng dẫn này, chúng ta sẽ tìm hiểu chú thích là gì, các chú thích Java khác nhau và cách sử dụng chúng với sự trợ giúp của các ví dụ.

Chú thích Java là siêu dữ liệu (dữ liệu về dữ liệu) cho mã nguồn chương trình của chúng tôi.

Chúng cung cấp thông tin bổ sung về chương trình cho trình biên dịch nhưng không phải là một phần của chính chương trình. Các chú thích này không ảnh hưởng đến việc thực thi chương trình đã biên dịch.

Chú thích bắt đầu bằng @. Cú pháp của nó là:

@AnnotationName

Hãy lấy một ví dụ về @Overridechú thích.

Các @Overridequy định cụ thể chú thích rằng phương pháp đó đã được đánh dấu với chú thích này sẽ ghi đè phương thức của lớp cha có cùng tên phương pháp, kiểu trả về, và danh sách tham số.

Nó không bắt buộc phải sử dụng @Overridekhi ghi đè một phương thức. Tuy nhiên, nếu chúng ta sử dụng nó, trình biên dịch sẽ báo lỗi nếu có gì đó sai (chẳng hạn như kiểu tham số sai) trong khi ghi đè phương thức.

Ví dụ 1: Ví dụ về chú thích @Override

class Animal {
  public void displayInfo() {
    System.out.println("I am an animal.");
  }
}

class Dog extends Animal {
  @Override
  public void displayInfo() {
    System.out.println("I am a dog.");
  }
}

class Main {
  public static void main(String[] args) {
    Dog d1 = new Dog();
    d1.displayInfo();
  }
}

Đầu ra

I am a dog.

Trong ví dụ này, phương thức displayInfo()hiện diện trong cả lớp con Animal và lớp con Dog . Khi phương thức này được gọi, phương thức của lớp con được gọi thay vì phương thức trong lớp cha.

Định dạng chú thích

Chú thích cũng có thể bao gồm các phần tử (thành viên / thuộc tính / tham số).

1. Chú thích điểm đánh dấu

Chú thích điểm đánh dấu không chứa thành viên / phần tử. Nó chỉ được sử dụng để đánh dấu một tuyên bố.

Cú pháp của nó là:

@AnnotationName()

Vì các chú thích này không chứa các phần tử, nên có thể loại trừ dấu ngoặc đơn. Ví dụ,

@Override

2. Chú thích một phần tử

Một chú thích phần tử chỉ chứa một phần tử.

Cú pháp của nó là:

@AnnotationName(elementName = "elementValue")

Nếu chỉ có một phần tử, nó là một quy ước để đặt tên phần tử đó là giá trị .

@AnnotationName(value = "elementValue")

Trong trường hợp này, tên phần tử cũng có thể bị loại trừ. Tên phần tử sẽ có giá trị theo mặc định.

@AnnotationName("elementValue")

3. Nhiều chú thích phần tử

Các chú thích này chứa nhiều phần tử được phân tách bằng dấu phẩy.

Cú pháp của nó là:

@AnnotationName(element1 = "value1", element2 = "value2")

Vị trí chú thích

Bất kỳ khai báo nào cũng có thể được đánh dấu bằng chú thích bằng cách đặt nó bên trên khai báo đó. Đối với Java 8, chú thích cũng có thể được đặt trước một kiểu.

1. Khai báo trên

Như đã đề cập ở trên, chú thích Java có thể được đặt bên trên các khai báo lớp, phương thức, giao diện, trường và các phần tử chương trình khác.

Ví dụ 2: Ví dụ về chú thích @SuppressWarnings

import java.util.*;

class Main {
  @SuppressWarnings("unchecked")
  static void wordsList() {
    ArrayList wordList = new ArrayList<>();

// This causes an unchecked warning
    wordList.add("programiz"); 

    System.out.println("Word list => " + wordList);
  }

  public static void main(String args[]) {
    wordsList();
  }
}

Đầu ra

Word list => [programiz]

Nếu chương trình trên được biên dịch mà không sử dụng @SuppressWarnings("unchecked")chú thích, trình biên dịch sẽ vẫn biên dịch chương trình nhưng nó sẽ đưa ra các cảnh báo như:

Main.java uses unchecked or unsafe operations.
Word list => [programiz]

Chúng tôi đang nhận được cảnh báo

Main.java uses unchecked or unsafe operations

vì câu lệnh sau.

ArrayList wordList = new ArrayList<>();

Điều này là do chúng tôi chưa xác định kiểu chung của danh sách mảng. Chúng tôi có thể khắc phục cảnh báo này bằng cách chỉ định các số liệu chung bên trong dấu ngoặc nhọn <>.

ArrayList<String> wordList = new ArrayList<>();

2. Nhập chú thích

Trước Java 8, chú thích chỉ có thể được áp dụng cho các khai báo. Bây giờ, chú thích kiểu cũng có thể được sử dụng. Điều này có nghĩa là chúng ta có thể đặt chú thích ở bất cứ nơi nào chúng ta sử dụng một loại.

Lời gọi hàm tạo

new @Readonly ArrayList<>()

Loại định nghĩa

@NonNull String str;

Tuyên bố này quy định cụ thể biến không null str kiểu Stringđể tránh NullPointerException.

@NonNull List<String> newList;

Khai báo này chỉ định một kiểu danh sách không null String.

List<@NonNull String> newList;

Khai báo này chỉ định một danh sách các giá trị không null của kiểu String.

Nhập phôi

newStr = (@NonNull String) str;

mở rộng và thực hiện điều khoản

class Warning extends @Localized Message

mệnh đề ném

public String readMethod() throws @Localized IOException

Chú thích kiểu cho phép mã Java được phân tích tốt hơn và cung cấp các kiểm tra kiểu thậm chí còn mạnh mẽ hơn.

Các loại chú thích

1. Chú thích được xác định trước

  1. @Deprecated
  2. @Override
  3. @SuppressWarnings
  4. @SafeVarargs
  5. @FunctionalInterface

2. Chú thích meta

  1. @Retention
  2. @Documented
  3. @Target
  4. @Inherited
  5. @Repeatable

3. Chú thích tùy chỉnh

Các kiểu chú thích này được mô tả chi tiết trong hướng dẫn Các kiểu chú thích của Java .

Sử dụng chú thích

  • Compiler instructions – Annotations can be used for giving instructions to the compiler, detect errors or suppress warnings. The built-in annotations @Deprecated@Override, @SuppressWarnings are used for these purposes.
  • Compile-time instructions – Compile-time instructions provided by these annotations help the software build tools to generate code, XML files and many more.
  • Runtime instructions – Some annotations can be defined to give instructions to the program at runtime. These annotations are accessed using Java Reflection.








Gõ tìm kiếm nhanh...