Tôi có một chú thích tùy chỉnh được gọi @Pojo mà tôi sử dụng cho tự động thế hệ tài liệu wiki:Java xử lý 6 chú thích - nhận được một lớp từ chú thích
package com.example.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public @interface Pojo {
Class<?> value();
}
tôi sử dụng nó như thế này:
@Pojo(com.example.restserver.model.appointment.Appointment.class)
để chú thích phương thức tài nguyên để bộ xử lý chú thích có thể tự động tạo trang wiki mô tả tài nguyên và loại mà nó mong đợi.
Tôi cần đọc giá trị của trường value
trong bộ xử lý chú thích, nhưng tôi gặp phải lỗi thời gian chạy.
Trong mã nguồn cho bộ xử lý của tôi, tôi có những dòng sau:
final Pojo pojo = element.getAnnotation(Pojo.class);
// ...
final Class<?> pojoJavaClass = pojo.value();
nhưng lớp thực tế trong không dành cho bộ vi xử lý. Tôi nghĩ tôi cần một số javax.lang.model.type.TypeMirror
để thay thế cho lớp học thực sự. Tôi không chắc chắn làm thế nào để có được một.
Các lỗi tôi nhận được là:
javax.lang.model.type.MirroredTypeException: Attempt to access Class object for TypeMirror com.example.restserver.model.appointment.Appointment
Các Appointment
là một lớp học đề cập trong một trong @Pojo
chú thích của tôi.
Thật không may, tài liệu và/hoặc hướng dẫn về xử lý chú thích Java có vẻ khan hiếm. Đã thử googling.
Không nhiều người hỏi loại câu hỏi này, nhưng đối với những người trong chúng ta sống ở Tartarus (Java), sự hỗ trợ của những người khác trở nên rất hữu ích – Ordiel