2011-11-08 22 views
16

Từ doc Java:Chú NGUỒN Retention Policy

CLASS: Chú thích sẽ được ghi lại trong tập tin lớp bởi trình biên dịch nhưng không cần phải được giữ lại bởi VM tại thời gian chạy.

RUNTIME: Chú thích sẽ được ghi trong tệp lớp bởi trình biên dịch và được máy ảo lưu giữ tại thời gian chạy, vì vậy chúng có thể được đọc một cách phản ánh.

NGUỒN: Chú thích sẽ bị trình biên dịch loại bỏ.

Tôi hiểu các tập quán của RUNTIME (để sử dụng chú thích với sự phản ánh) và CLASS (đối với trình biên dịch) nhưng tôi không hiểu khi nó có thể hữu ích để sử dụng

@Retention (RetentionPolicy. SOURCE)

Bạn có thể giải thích?

Trả lời

13

Những thứ như @SuppressWarnings, @Override là các chú thích được trình biên dịch sử dụng - không cần thiết khi chạy. Đối với những RetentionPolicy.SOURCE sẽ có ý nghĩa. Ngoài ra chú thích có thể được sử dụng để tạo mã (xem Spring ROO) - chú thích đó cũng không được yêu cầu trong thời gian chạy.

+4

và tại sao không RetentionPolicy.CLASS? – JohnJohnGa

+1

+1: Một số chú thích được trình biên dịch sử dụng là duy trì CLASS. –

+1

Những thứ này không cần thiết trong ByteCode (trong tệp .class). – gkamal

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