Repeat Annotation In Java

Kiến thức yêu cầu( Prerequirement )

Trong một vài trường hợp, bạn cần sử dụng nhiều lần annotation tại cùng 1 vị trí như trên một method, constructor.
Ví dụ khi viết cơ chế về authorization và cho phép chỉ có admin và superAdmin có thể tạo 1 user

1. Với Java 7 và phiên bản thấp hơn

  • Để giải quyết bài toán như trên sẽ có 2 cách:
    • Một là tạo annotation với value() method trả về mảng String của roleName

Khai báo

Sử dụng:

  • Cách thứ 2 là tạo ra 1 annotation container chứa annotation Role

Khai báo contained annotation:

Khai báo container annotation:

Sử dụng:

Hoặc:

2. Với Java 8
Java 8 hỗ trợ repeat annotation bằng cách sử dụng @Repeatable

  • Khai báo contained annotation: giá trị của attribute value trỏ đến container annotation

  • Khai báo container annotation: method value trả về 1 mảng contained annotation

  • Sử dụng:

3. Note

  • Lưu ý: khi khai báo Retention cho contained annotation và container annotation. Retention của container annotation phải có giá trị bằng hoặc lớn hơn retention của container annotation.

Ví dụ chúng ta không thể khai báo như sau:

  • Lưu ý tương tự với khai báo @Target khi sử dụng repeat annotation

Và:

4. Link tham khảo:

 ITZone via Viblo
Chia sẻ bài viết ngay