Сравнение между String
переменной и String
литералом
вызовом метода для переменной: если переменная равна нулю, вы получите NullPointerException
aviid.equals("44")
вызов метода для литерала: вы не можете получить NPE, и у вас будет false
в случае, если переменная содержит null
"44".equals(aviid)
Сонар предупреждает вас, потому что для него лучше получить ложь, чем NPE
, но код - ваш выбор.
Также ваш тест неверен, потому что он всегда будет правда, поскольку у вас не может быть 44 и 55 одновременно, одно из них будет верным, вы наверняка имели в виду &&
, и вам лучше сделать это иначе, вам не понадобится отрицание.
if ((!aviid.equals("44")) && (!aviid.equals("55"))) {
И сделать это короче (из комментариев)
deviceElement.setAttribute("avi", aviid.matches("44|55") ? aviid : "88");