Подтвердить что ты не робот

Возможно ли, что Java String.split может вернуть пустую строку []

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

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

Мне нужно выполнить нулевую проверку, прежде чем использовать parts пост-расщепление?

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Итак, в конце концов, нет, вам не нужно проверять значение null.

Ответ 3

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

Ответ 4

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

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

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

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