gọi Hãy nói rằng tôi có một tình huống như thế này:Xem chú thích java trên phương pháp
public String method(String s) {
return stringForThisVisibility(s, EnumVisibility.PUBLIC);
}
và tôi muốn thay thế nó với một chú thích như thế này:
@VisibilityLevel(value = EnumVisibility.PUBLIC)
public String method(String s) {
return stringForThisVisibility(s);
}
này có vẻ là một tốt hơn và giải pháp rõ ràng hơn, nhưng tôi cần phương thức stringForThisVisibility để biết giá trị của @VisibilityLevel với một số loại phản ánh. Điều đó có thể không? Tôi có thể xem các chú thích trên phương thức gọi stringForThisVisibility không?
Đó là giải pháp duy nhất tôi biết. Không phải là nó không được bảo đảm làm việc trong mọi tình huống: Nếu trình nạp lớp nạp lớp được gọi không biết lớp gọi (và không có trình nạp lớp cha nào của nó làm), lệnh gọi tới 'Class.forName()' sẽ thất bại. –
Vì vậy, bạn nói rằng có thể tốt hơn để được hài lòng với giải pháp đầu tiên ... – Fabio
kỹ thuật này là mong manh (nếu phương pháp của bạn không được gọi trực tiếp từ một phương thức chú thích? Bạn cần phải lặp qua ngăn xếp. là trên một phương thức superclass và không phải trên phương thức gọi trực tiếp? bạn cần phải lặp qua superclasses ...) và nếu Philipp là đúng, nó có thể làm hỏng các môi trường phức tạp (j2ee? osgi?). nó cũng rất chậm. bạn có thể chọn giải pháp sử dụng điểm đánh dấu ThreadLocal và đặt điểm đánh dấu trước khi gọi phương thức, nhưng điều đó cũng sẽ trông kỳ lạ. có lẽ nếu bạn có thể mô tả chính xác những gì bạn đang cố gắng để làm một giải pháp thanh lịch có thể được tìm thấy – radai