2013-06-05 39 views
6

Eclipse có chú thích @NonNullByDefault, chú thích xử lý tất cả các giá trị là @NonNull trừ khi bạn chú thích chúng một cách rõ ràng là @Nullable.Có chú thích @NonNullByDefault trong IDEA không?

Có tùy chọn tương đương trong IntelliJ IDEA hay bạn phải luôn sử dụng @Nonnull?

+1

Đó không phải là '@ Nonnull' thay thế (JSR 305)? IDEA có thể sử dụng '@ NotNull', nhưng đây là một chú thích khác. – fge

+0

@fge Cảm ơn, tôi đã sửa nó. –

+0

Nhân tiện, bạn sẽ sử dụng chú thích nào? Đó có phải là để phân tích mã nguồn tĩnh không? IDEA có thể sử dụng FindBugs, nó có một plugin cho điều đó. Khi sử dụng các chú thích này, tôi làm theo lời khuyên của Guice: các tham số của phương thức không thể rỗng trừ khi được chú thích bằng '@ Nullable'. Nhưng đó là câu hỏi về chính sách ... – fge

Trả lời

3

Không, nó hiện không được IDEA hỗ trợ.

Làm bằng chứng, hãy xem liên kết của lena về yêu cầu tính năng mở đối với allow 'NotNull' as the default element behavior for a given class or package.

Có thể một tính năng tương tự sẽ trở thành tiêu chuẩn với JSR-305, có thể bao gồm chú thích @ParametersAreNonnullByDefault và chú thích ngược lại @ParametersAreNullableByDefault. Lưu ý rằng trái ngược với @NonNullByDefault, giá trị trả về không được đề cập trong hai chú thích đó. Vì vậy, bạn vẫn phải chú thích giá trị trả về một cách rõ ràng.

Tất cả điều đó không thay đổi trạng thái hiện tại. Không có JSR-305 trở thành một tiêu chuẩn, cũng như không IDEA thực hiện nó.

+2

IDEA hiện hỗ trợ @ParametersAreNonnullByDefault: http://www.jetbrains.com/idea/webhelp/@parametersarenonnullbydefault-annotation.html –

+0

^liên kết trong nhận xét bị hỏng ... tính năng này hoạt động (hiện tại ...): https://www.jetbrains.com/help/idea/2017.1/parametersarenonnullbydefault-annotation.html – Lambart

7

Ý tưởng phiên bản 14 sẽ bao gồm hỗ trợ chú thích JSR 305 "@TypeQualifierDefault", cho phép người dùng tạo chú thích tùy chỉnh, được sử dụng trên khai báo gói trong tệp package-info.java, chỉ định mọi thứ trong gói đó (không chỉ các tham số, nhưng các giá trị trả về của phương thức, các biến cục bộ, v.v.) sẽ được chú thích ngầm là không cho phép các giá trị null.

Thật không may, điều này không (hiện tại) đệ quy ảnh hưởng đến các gói phụ, do đó mỗi gói phụ phải có tệp package-info.java, tuyên bố rằng gói con để sử dụng chú thích.

Xem ở đây để biết chi tiết và ví dụ về sử dụng:

http://youtrack.jetbrains.com/issue/IDEA-125281

Lưu ý rằng điều này đã được thực hiện trong chương trình Early Access (EAP) xây dựng.