Tôi đang tìm một dấu cắt khớp với các thực thi phương thức trong các lớp con phân lớp một chú thích cụ thể. Các tuyệt vời AspectJ cheat sheet giúp tôi để tạo ra các pointcut sau:@AspectJ pointcut cho các lớp con của một lớp học với chú thích
within(@my.own.annotations.AnnotationToMatch *) && execution(* *(..))
này phù hợp với tất cả các cuộc gọi phương thức của một lớp A mà mang @AnnotationToMatch, nhưng không phải phương pháp của một lớp B kéo dài A. Làm thế nào tôi có thể kết hợp cả hai?
Cảm ơn! Vì lợi ích của người khác: nếu bạn sử dụng kiểu chú thích, thì cha mẹ khai báo sẽ dịch thành @DeclareParents ("(@ MyAnnotation *)") riêng tư TrackedParentMarker emptyMixinForClassesWithMyAnnotation; –
Điều đó hoạt động tốt cho các lớp siêu, nhưng không tốt cho các giao diện. I E. trong mã như 'MyInterface o = new MyClass()' có vẻ loke 'MyClass' được tải trước giao diện và điều kiện không khớp. Thêm một 'println (MyInterface.class)' trước khi câu lệnh sửa lỗi, nhưng không phải là yêu cầu khả thi đối với các khía cạnh thư viện. Bất kỳ ý tưởng? – ddimitrov