Возможно ли, что Java String.split может вернуть пустую строку [] - PullRequest
38 голосов
/ 01 августа 2011

Возможно ли для split вернуть ноль String[]?Мне любопытно, поскольку я хочу стараться быть максимально защищенным в своем коде, не прибегая к ненужным проверкам.Код выглядит следующим образом:

String[] parts = myString.split("\\w");  

нужно ли выполнять нулевую проверку перед использованием parts после разделения?

Ответы [ 4 ]

50 голосов
/ 01 августа 2011

Никогда не возвращает ноль. Вы должны всегда проверять Javadoc метода, если вы не уверены. Например String#split(String) говорит

Этот метод работает так, как если бы он вызывал метод с двумя аргументами split

... и String#split(String,int) говорит:

Если выражение не совпадает ни с одной частью ввода, тогда результирующий массив имеет только один элемент, а именно эту строку.

Из Javadoc вы также можете узнать, какие исключения могут произойти и, что более важно, почему были выброшены эти исключения. Также очень важно проверить, являются ли классы потокобезопасными или нет.

6 голосов
/ 01 августа 2011

Я рекомендую вам загрузить исходный код Java для тех случаев, когда API неясен. Все ответы здесь просто скажут вам ответ, но вы должны увидеть это сами. Вы можете скачать исходный код Java с здесь (смотрите внизу страницы).

Следуя исходному коду, вы получите String[] Pattern.split(CharSequence input, int limit). Возвращаемое значение приходит от ненулевого ArrayList, для которого вызывается toArray. toArray не возвращает ноль: в случае пустого списка вы получите пустой массив.

Так что в конце нет, вам не нужно проверять на ноль.

1 голос
/ 01 августа 2011

Метод Split вызывает метод Patter.split, который делает это в начале метода:

ArrayList<String> matchList = new ArrayList<String>();

И в конце концов matchList.toArray () возвращает массив.

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

1 голос
/ 01 августа 2011

Нет, вам не нужно проверять наличие нулей на деталях.

...