2012-01-24 43 views
9

Xin chào: Tôi muốn đảm bảo rằng chú thích có mặt tại thời gian biên dịch trong một lớp học. Điều này có thể không? Tôi nhận ra rằng annoataions là, bản thân, các lớp học, vì vậy tôi giả định như vậy - nhưng Im chỉ không chắc chắn cú pháp ở đâu và làm thế nào để thực thi/thực hiện một cấu trúc như vậy trong các lớp học của tôi.Thực hiện chú thích java tại thời gian biên dịch

+0

Tôi thường thấy bộ kiểm tra chú thích được sử dụng như một phần của bộ thử nghiệm đơn vị. Liệu nó có giúp hiệu quả với anh không? – templatetypedef

+0

Vâng - tôi có một số hằng số cần phải được nhận từ các lớp học. Các lớp có một hàm tạo xấu xí, vì vậy tôi không thể thực thi chúng bằng cách sử dụng getters. Vì vậy, tôi figured tôi sẽ chú thích các lớp bằng cách sử dụng chú thích với các tham số liên tục như các lĩnh vực chú thích. – jayunit100

Trả lời

14

Bạn có thể viết bộ xử lý chú thích để chạy logic tùy ý tại thời gian biên dịch.

Từ bộ xử lý chú thích, bạn có thể thực hiện những việc như kiểm tra xem một lớp có cấu trúc hoặc thành viên cụ thể có mặt không nếu một chú thích cụ thể tồn tại trên lớp đó. Chúng khá linh hoạt - để biết thêm về những gì bạn có thể làm với chúng, hãy kiểm tra the API. Chúng cũng được hỗ trợ trong các IDE chính như Eclipse và Netbeans.

Giới thiệu về cách viết bộ xử lý chú thích là here.

+0

Đây là câu trả lời hay. Tôi sẽ chờ xem có cách tiếp cận cấp cao hơn hay đơn giản hơn (tức là cách đơn giản thực thi điều này trong mã/lớp hiện có). – jayunit100

+0

Từ những gì tôi có thể nói, bộ xử lý chú thích sẽ bỏ qua việc xử lý trên các lớp chưa có chú thích, điều này dường như không phải là những gì mà OP đang tìm kiếm. Mặc dù tôi đang tìm giải pháp tương tự, nên nếu tôi sai, tôi sẽ yêu một ví dụ. –

+2

Nếu bạn sử dụng @SupportedAnnotationTypes ("*") trên bộ xử lý của bạn thì nó sẽ nhận tất cả các lớp, ngay cả khi không có chú thích trên đó. – prunge

Các vấn đề liên quan