13/08/2018, 22:01

Annotation trong java

Autoboxing và unboxing trong java 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ử ...

Autoboxing và unboxing trong java

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.

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
Autoboxing và unboxing trong java
0