2013-04-26 4 views
6

При настройке Eclipse 4.2.0 для выполнения нулевого анализа (с настройкой на использование @javax.annotation.Nonnull и т. Д.) Следующий код генерирует предупреждениеEclipse null analysis: выражение типа int требует необработанного преобразования для соответствия «@Nonnull Integer»

Null безопасности типа: выражение типа междунар необходимо непроверенную преобразования, чтобы соответствовать «@Nonnull Integer»

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

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

Как я должен это исправить (без использования @SuppressWarnings("null"))? Похоже, что анализатор не знает, что примитивы в штучной упаковке не могут быть null.

+2

Это была ошибка в Eclipse, которая была исправлена ​​на вехе 7 предстоящего 4.5 выпуска. –

+1

Не совсем исправлено, см. Https://bugs.eclipse.org/bugs/show_bug.cgi?id=447661 –

ответ

3

Я думаю, что это ошибка в Eclipse. Я пробовал то же самое с IntelliJ, и он работает так, как ожидалось.

Когда я передаю Null, IntelliJ правильно сообщает мне, что nulls не разрешены.

enter image description here

Однако, когда я использую обычную переменную I, никакая ошибка не выскочит поднимает вверх, что совершенно правильно. enter image description here

Я даже попытался это, просто для эксперимента, так что я не уверен, если вы застряли в Eclipse, то я бы рекомендовал использовать либо свободный Community version из IntelliJ или Ultimate edition.

enter image description here