Annotation, sử dụng annotation với reflection trong java

Bài viết Annotation, sử dụng annotation với reflection trong java thuộc chủ đề về Wiki How thời gian này đang được rất nhiều bạn quan tâm đúng không nào !! Hôm nay, Hãy cùng https://hangnhatcaocap.com.vn/ tìm hiểu Annotation, sử dụng annotation với reflection trong java trong bài viết hôm nay nhé ! Các bạn đang xem bài : “Annotation, sử dụng annotation với reflection trong java”

Thông tin chi tiết về Annotation, sử dụng annotation với reflection trong java


Xem nhanh


Trong bài viết trước mình có giới thiệu qua về reflection và một số thành phần của nó trong java. Hôm nay, mình sẽ giới thiệu về một thành phần quan trọng của Reflection đó là annotation. (Nếu bạn nào chưa đọc bài viết trước của mình giới thiệu về reflection thì có thể tham khảo tại đây: https://viblo.asia/p/java-reflection-and-anotation-DbmvmWRMeAg)

1. Annotation

Annotations là một tính năng mới được thêm vào từ java 5. Nó được hiểu là một dạng chú thích hoặc meta data được chèn vào code java để đặc tả dữ liệu cho một đối tượng, giá trị nào đó. Nó có thể được xử lý tại thời điểm compile hoặc tại thời điểm runtime.

Ví dụ về một class annotation

@MyAnnotation(value = "Hello World") public class TheClass 

Lớp TheClass có một annotation @MyAnnotation được ghi lên trên của tên lớp.

Tạo anotation: Annotation được định nghĩa giống như một interface, ví dụ tạo một annotation @MyAnnotation

@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface MyAnnotation public String value(); 
  • “@” được khai báo trước interface để đánh dấu đó là một annotation, sau khi kháo báo một annotation bạn có thể sử dụng nó trong code của mình như trong ví dụ trên đó với lớp TheClass.

  • @Retention(RetentionPolicy.RUNTIME) và @Target(ElementType.TYPE) xác định cách thức và thời điểm annotation được sử dụng

  • @Retention(RetentionPolicy.RUNTIME): cho biết annotation có thể được truy cập qua reflection tại thời điểm runtime, nếu bạn không khai báo nó khi định nghĩa một annotation bạn sẽ không thể truy cập nó tại thời điểm runtime.

  • @Target(ElementType.TYPE): cho biết việc bạn chỉ có thể sử dụng annotation với class hoặc interface.

2. Truy cập annotation với reflection.

Bạn có thể truy cập annotation của một class, một field, một method tại thời điểm runtime.

a. Class Annotations Truy cập vào class annotation:

Class aClass = TheClass.class; Annotation[] annotations = aClass.getAnnotations(); for(Annotation annotation : annotations) if(annotation instanceof MyAnnotation) MyAnnotation myAnnotation = (MyAnnotation) annotation; System.out.println("value: " + myAnnotation.value()); 

Bạn cũng có thể chỉ rõ class annotation mà mình muốn truy cập

Class aClass = TheClass.class; Annotation annotation = aClass.getAnnotation(MyAnnotation.class); if(annotation instanceof MyAnnotation) MyAnnotation myAnnotation = (MyAnnotation) annotation; System.out.println("value: " + myAnnotation.value()); 

b. Method Annotations

Truy cập method annotation:

public class TheClass @MyAnnotation(value = "Hello World") public void doSomething() Method method = ... //obtain method object Annotation[] annotations = method.getDeclaredAnnotations(); for(Annotation annotation : annotations) if(annotation instanceof MyAnnotation) MyAnnotation myAnnotation = (MyAnnotation) annotation; System.out.println("value: " + myAnnotation.value()); 

Tuơng tự với class annotation bạn cũng có thể chỉ rõ method annotation:

Method method = ... // obtain method object Annotation annotation = method.getAnnotation(MyAnnotation.class); if(annotation instanceof MyAnnotation) MyAnnotation myAnnotation = (MyAnnotation) annotation; System.out.println("value: " + myAnnotation.value()); 

c. Parameter Annotations

Có thể thêm annotations vào trước các khai báo parameter của một hàm.

public class TheClass public static void doSomethingElse( @MyAnnotation(value="aValue") String parameter) 

Và truy cập parameter annotations từ đối tượng của lớp Method

Method method = ... //obtain method object Annotation[][] parameterAnnotations = method.getParameterAnnotations(); Class[] parameterTypes = method.getParameterTypes(); int i=0; for(Annotation[] annotations : parameterAnnotations) Class parameterType = parameterTypes[i++]; for(Annotation annotation : annotations) if(annotation instanceof MyAnnotation) MyAnnotation myAnnotation = (MyAnnotation) annotation; System.out.println("param: " + parameterType.getName()); System.out.println("name : " + myAnnotation.name()); System.out.println("value: " + myAnnotation.value()); 

d. Field Annotations

Ví dụ về một field annotation

public class TheClass @MyAnnotation(name="someName", value = "Hello World") public String myField = null; 

Truy cập

Field field = ... //obtain field object Annotation[] annotations = field.getDeclaredAnnotations(); for(Annotation annotation : annotations) if(annotation instanceof MyAnnotation) MyAnnotation myAnnotation = (MyAnnotation) annotation; System.out.println("name: " + myAnnotation.name()); System.out.println("value: " + myAnnotation.value()); 

Cũng có thể chỉ rõ field annotation:

Field field = ... // obtain method object Annotation annotation = field.getAnnotation(MyAnnotation.class); if(annotation instanceof MyAnnotation) MyAnnotation myAnnotation = (MyAnnotation) annotation; System.out.println("name: " + myAnnotation.name()); System.out.println("value: " + myAnnotation.value()); 

Qua bài viết bạn có thể nắm được việc tạo một annotation và truy cập nó .

references http://tutorials.jenkov.com/java/annotations.html



Các câu hỏi về java annotation là gì


Nếu có bắt kỳ câu hỏi thắc mắt nào vê java annotation là gì hãy cho chúng mình biết nhé, mõi thắt mắt hay góp ý của các bạn sẽ giúp mình cải thiện hơn trong các bài sau nhé <3 Bài viết java annotation là gì ! được mình và team xem xét cũng như tổng hợp từ nhiều nguồn. Nếu thấy bài viết java annotation là gì Cực hay ! Hay thì hãy ủng hộ team Like hoặc share. Nếu thấy bài viết java annotation là gì rât hay ! chưa hay, hoặc cần bổ sung. Bạn góp ý giúp mình nhé!!

Các Hình Ảnh Về java annotation là gì


Các hình ảnh về java annotation là gì đang được chúng mình Cập nhập. Nếu các bạn mong muốn đóng góp, Hãy gửi mail về hộp thư [email protected] Nếu có bất kỳ đóng góp hay liên hệ. Hãy Mail ngay cho tụi mình nhé

Tra cứu dữ liệu, về java annotation là gì tại WikiPedia

Bạn nên tìm thêm nội dung chi tiết về java annotation là gì từ web Wikipedia tiếng Việt.◄ Tham Gia Cộng Đồng Tại

💝 Nguồn Tin tại: https://hangnhatcaocap.com.vn/

💝 Xem Thêm Chủ Đề Liên Quan tại : https://hangnhatcaocap.com.vn/wiki-hoi-dap/


Related Posts

About The Author