У меня есть метод, в котором параметр помечен аннотацией @Nonnull
. Код, который вызывает метод, должен проверить, является ли значение нулевым. Вместо простой проверки x != null
он вызывает служебный метод другого класса. (В реальном коде служебный метод также проверяет, является ли это пустой строкой).
Моя проблема заключается в том, что Intellij Idea показывает предупреждение проверки при вызове метода Nonnull, в котором говорится, что моя переменная "может быть нулевой". Я знаю, что он не может быть нулевым из-за проверки служебного метода - как я могу сообщить об этом инспектору?
Поскольку это немного абстрактно, вот минимальный пример того, что я имею в виду:
package org.ethelred.ideatest;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
/**
* tests annotations
*/
public class AnnotationChecker
{
public static void main(String[] args)
{
String x = null;
if(args.length > 0)
{
x = args[0];
}
if(!isNull(x))
{
useObject(x);
}
if(x != null)
{
useObject(x);
}
}
public static boolean isNull(@CheckForNull Object o)
{
return o == null;
}
public static void useObject(@Nonnull Object o)
{
System.out.println(o);
}
}
Здесь используются аннотации JSR 305.
В этом примере в первомвызове useObject
Intellij помещает предупреждение в параметр x
о том, что «Аргумент 'x' может быть нулевым». Во втором вызове предупреждения нет.