5 комментариев

wayway
if (employees != null && !employees.equals(""))
ну вот это точно, а что еще?
vasiliy_urosov
метод isEmpty()
Izhak
  • Izhak
  • 0
  • Комментарий отредактирован 2014-05-27 02:18:09 пользователем Izhak
Вот такой код
employees = null;
       if (!employees.isEmpty())
            System.out.println("Hi");

Даёт результат
Exception in thread "main" java.lang.NullPointerException
	at com.javarush.test.level15.lesson09.task05.Solution.main(Solution.java:22)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 


Метод isEmpty() хорош, когда надо сравнить строку, для которой выделена память с ""

Аналогом может являться !employees.equals(""). Почему это проблема, описано в www.skipy.ru/technics/strings.html

Единственный момент, который хотелось бы упомянуть – сравнение с литералами. Я часто вижу конструкции типа str.equals(«abc»). И тут есть небольшие грабли – перед этим сравнением правильно бы было сравнить str с null, чтобы не получить NullPointerException. Т.е. правильной будет конструкция str != null && str.equals(«abc»). Между тем – ее можно упростить. Достаточно написать всего лишь «abc».equals(str). Проверка на null в этом случае не нужна.
То есть, рекомендуется !"".equals(employees)
Так как "" уже являются объектом типа String, то мы можем проверить на пустоту и строковый объект employees.

Но есть проблема
Если employees=null, то код

employees = null;
       if (!"".equals(employees))
            System.out.println("Hi");

Выведет
Hi
значит проверка на null, то есть на то, что память не выделена, всё же нужна. Иначе, если мы станем использовать employees в коде дальше, вылетит исключение.

Таким образом, код особо не нуждается в доработке, но если очень хочется, то можно сделать так

if (employees != null && !"".equals(employees)) {
Nimmo
StringUtils.isBlank()
SaLiK
  • SaLiK
  • 0
  • Комментарий отредактирован 2016-12-26 07:57:36 пользователем SaLiK
Почему бы не так?

try {
if (!employees.isEmpty()) {
// our code
}
catch (NullPointerException e) {
}

И еще понравилась статья на тему Null: www.yegor256.com/2014/05/13/why-null-is-bad.html
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.