В чем разница между TextUtils.isEmpty(string)
и string.isEmpty
?
Оба выполняют ту же операцию.
Полезно ли использовать TextUtils.isEmpty(string)
?
В чем разница между TextUtils.isEmpty(string)
и string.isEmpty
?
Оба выполняют ту же операцию.
Полезно ли использовать TextUtils.isEmpty(string)
?
Да, TextUtils.isEmpty(string)
является предпочтительным.
Для string.isEmpty()
значение нулевой строки выдает NullPointerException
TextUtils
всегда будет возвращать логическое значение.
В коде первый просто вызывает эквивалент другого, плюс нулевую проверку.
return string == null || string.length() == 0;
В классе TextUtils
public static boolean isEmpty(@Nullable CharSequence str) {
if (str == null || str.length() == 0) {
return true;
} else {
return false;
}
}
проверяет, равна ли длина строки нулю и является ли строка нулевой, чтобы избежать выброса исключения NullPointerException
в классе String
public boolean isEmpty() {
return count == 0;
}
проверяет, равна ли длина строки только нулю, это может привести к NullPointerException
если вы попытаетесь использовать эту строку, и она будет нулевой.
Посмотрите на документ
для String # isEmpty они указывают:
логический
isEmpty() Возвращает true, если и только если length() равно 0.
и для TextUtils.isEmpty документация объясняет:
public static boolean isEmpty (CharSequence str)
Возвращает true, если строка имеет нулевое значение или длину 0.
поэтому основное отличие заключается в том, что при использовании TextUtils.isEmpty вам все равно, или вам не нужно проверять, ссылается ли строка на null или нет,
в другом случае да.
TextUtils.isEmpty()
лучше в Android SDK из-за внутренней проверки на нулевое значение, поэтому вам не нужно проверять строку на нулевое значение, прежде чем проверять ее пустоту самостоятельно.
Но с Kotlin вы можете использовать String?.isEmpty()
и String?.isNotEmpty()
вместо TextUtils.isEmpty()
и !TextUtils.isEmpty()
, это будет более удобным для читателей
Поэтому я думаю, что предпочтительнее использовать String?.isEmpty()
в Kotlin и TextUtils.isEmpty()
в Android Java SDK
String?.isNullOrEmpty
может быть то, что вы ищете