2012-04-28 37 views
11

Gần đây, hãy đọc chú thích JCIP và chúng có vẻ thú vị. Đã đi đến trang web và đã xem xét nguồn. Vấn đề duy nhất là các src jar chỉ chứa các chú thích ... Tôi không thấy nơi tôi có thể tìm thấy các bộ xử lý chú thích mà thực sự làm bất cứ điều gì! Tôi chỉ tìm kiếm ở nơi không đúng, hoặc là những chú thích Java không thực sự (có nghĩa là, không có cách nào để thực thi @Immutable khi nó được sử dụng để đánh dấu một lớp)?Làm cách nào để viết mã với JCIP (Java Concurrency in Practice)

  • @Immutable
  • @GuardedBy
+0

Vui lòng chỉnh sửa câu hỏi của bạn và giải thích JCIP là gì. Tôi giả sử bạn có nghĩa là Java Concurrency trong thực hành nhưng nó cần được mở rộng. Và tôi không quen thuộc với chú thích của bạn. – Gray

+0

Xin lỗi vì sự mơ hồ đó! – IAmYourFaja

Trả lời

10

FindBugs hỗ trợ những chú thích. Hỗ trợ cho các chú thích đó và các chú thích khác được mô tả trong this documentation page.

+0

Vì vậy, chú thích JCIP - điểm của chúng là gì? Có phải chúng chỉ là những chú thích "rỗng" được sử dụng trong các ví dụ của JCIP để giúp người đọc theo dõi, hoặc có liên minh nào giữa JCIP và FindBugs không? – IAmYourFaja

+3

Chú thích nói chung chỉ là: chú thích. Chúng chú thích mã nguồn và/hoặc byte của bạn. Tất cả các chú thích (trừ khi chúng được sử dụng hoàn toàn cho mục đích tài liệu) có nghĩa vụ phải được xử lý bởi một số công cụ. Trong trường hợp chú thích JCIP, FindBugs là một công cụ như vậy. Nếu bạn chú thích một số lớp là không thay đổi được, và lớp thực tế không phải là bất biến, FindBugs sẽ tạo ra một cảnh báo khi kiểm tra lớp này. Chú thích JCIP có hai mục đích: chúng ghi lại thiết kế của mã và chúng có thể được FindBugs sử dụng và các công cụ khác để kiểm tra xem thiết kế dự định có được tôn trọng hay không. –

1

Chú thích JCIP là cách chính thức để ghi lại hợp đồng đồng thời như thành viên này là "@GuardedBy" trường này.

Chúng không hoạt động chức năng trong mã của bạn.

4

IntelliJ IDE sẽ sử dụng các chú thích này để tìm các lỗi trong mã của bạn. Nếu bạn chú giải một biến là @GuardedBy (some_lock), IDE sẽ gắn cờ các trường hợp bạn truy cập vào nó mà không đồng bộ hóa đúng cách trên đó. Điều này rất hữu ích.

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