В чем разница между 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
может быть то, что вы ищете