2013-04-26 22 views
6

Khi định cấu hình Eclipse 4.2.0 để thực hiện phân tích null (được định cấu hình để sử dụng @javax.annotation.Nonnull v.v.), mã sau sẽ tạo cảnh báoPhân tích null của Eclipse: Biểu thức loại int cần được chuyển đổi không được kiểm tra để phù hợp với '@Nonnull Integer'

an toàn kiểu Null: các biểu hiện của kiểu int cần được kiểm soát chuyển đổi để phù hợp với '@Nonnull Integer'

class C 
{ 
    static void foo(int i) 
    { 
    bar(i); // Warning 
    } 

    static void bar(@javax.annotation.Nonnull Integer i) 
    { 
    } 
} 

Làm sao tôi phải sửa lỗi này (mà không sử dụng @SuppressWarnings("null"))? Dường như máy phân tích không biết rằng nguyên thủy đóng hộp không thể là null.

+2

Đây là một lỗi trong Eclipse, mà đã cố định cho cột mốc 7 của việc phát hành 4,5 sắp tới. –

+1

Nó không hoàn toàn cố định, xem https://bugs.eclipse.org/bugs/show_bug.cgi?id=447661 –

Trả lời

3

Tôi nghĩ đó là lỗi trong Eclipse. Tôi đã thử cùng với IntelliJ, và nó hoạt động như mong đợi ở đó.

Khi tôi vượt qua một Null, IntelliJ chính xác cho tôi biết rằng các giá trị không được phép.

enter image description here

Tuy nhiên, khi tôi sử dụng biến i bình thường, không có lỗi pops up lên, mà là khá chính xác. enter image description here

Tôi thậm chí đã cố gắng này, chỉ cần cho thử nghiệm, vì vậy tôi không chắc chắn nếu bạn đang mắc kẹt với Eclipse, nếu không tôi khuyên bạn nên sử dụng một trong hai miễn phí Community version của IntelliJ, hoặc Ultimate edition.

enter image description here