Установить строку в "" или оставить ее нулевой? - PullRequest
4 голосов
/ 07 октября 2009

У меня есть некоторые строковые переменные, которые получают значения при вызове функции getParameter(), и некоторые из этих переменных, вероятно, будут null.

Позже я оценим эти переменные, используя метод equals(). Должен ли я установить для всех переменных String пустую строку (""), если они равны null, чтобы избежать каких-либо проблем?

Ответы [ 2 ]

13 голосов
/ 07 октября 2009

Альтернативой является использование статического метода util для сравнения. Apache commons-lang StringUtils.equals (String, String) возможно с четко определенным поведением для нулей.

// null safe compare
if (StringUtils.equals(variable,"hello")) {...}

// is "" or null 
if (StringUtils.isEmpty(variable)) { ... }

// with static imports it's a bit nicer
if (isNotEmpty(var1) && isEmpty(var2)) { ... }
10 голосов
/ 07 октября 2009

У вас есть три варианта - Если известно, что сравниваемый элемент не является нулевым (например, константой), то сначала используйте его.

if ("hello".equals(variable)) { ... }

Сначала проверьте наличие нуля

if (variable != null && variable.equals("hello")) { ... }

Наконец, если null и пустая строка могут рассматриваться как один и тот же нисходящий поток, тогда установите строку в пустую строку. Но если вы хотите обрабатывать ноль по-другому, вы не можете этого сделать.

...