2013-04-26 18 views
6

Podczas konfigurowania Eclipse 4.2.0 w celu wykonania analizy zerowej (skonfigurowanej do używania @javax.annotation.Nonnull itp.) Poniższy kod wygeneruje ostrzeżenieAnaliza zerowa Eclipse: wyrażenie typu int wymaga niezaznaczonej konwersji zgodnie z "@Nonnull Integer"

Null bezpieczeństwa typ: wyrażenie typu int potrzebuje niesprawdzony konwersji w celu dostosowania się do '@Nonnull Integer'

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

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

Jak mam rozwiązać ten problem (bez użycia @SuppressWarnings("null"))? Wygląda na to, że analizator nie wie, że prymitywy pudełkowe nie mogą być w wersji null.

+2

To był błąd w Eclipse, który został ustalony dla milestone 7 nadchodzącym wydaniu 4.5. –

+1

Nie jest całkowicie poprawione, zobacz https://bugs.eclipse.org/bugs/show_bug.cgi?id=447661 –

Odpowiedz

3

Myślę, że to błąd w Eclipse. Próbowałem tego samego z IntelliJ i działa zgodnie z oczekiwaniami.

Po przekazaniu wartości Null IntelliJ poprawnie informuje mnie, że wartości null są niedozwolone.

enter image description here

Jednak kiedy używam normalnej zmiennej I, nie wyskakuje błąd upy w górę, co jest całkiem poprawne. enter image description here

Próbowałem nawet to, po prostu dla eksperymentu, więc nie jestem pewien, czy utkniesz do Eclipse, inaczej polecam stosując albo wolna Community version z IntelliJ lub Ultimate edition.

enter image description here