2016-04-03 9 views
18

Jaka jest różnica między TextUtils.isEmpty(string) i string.isEmpty?Android TextUtils isEmpty vs String.isEmpty

Obie operacje wykonują tę samą operację.

Czy korzystanie z TextUtils.isEmpty(string) jest korzystne?

+1

Wiesz, że zawsze możesz po prostu przyjrzeć się implementacji obu metod, aby samodzielnie określić różnicę w kilka sekund ... –

+1

TextUtils Kod źródłowy: http://grepcode.com/file/repository.grepcode.com /java/ext/com.google.android/android/5.1.1_r1/android/text/TextUtils.java#TextUtils.isEmpty%28java.lang.CharSequence%29 –

Odpowiedz

31

Preferowane jest, TextUtils.isEmpty(string).


Dla string.isEmpty(), wartość null ciąg rzuci NullPointerException

TextUtils zawsze zwraca wartość logiczną.

W kodzie byłego po prostu calls the equivalent of the other, plus kontrola zerowa.

return string == null || string.length() == 0; 
+0

@RuchirBaronia oznacza "TextUtils.isEmpty (string) 'Sprawdź też, czy obiekt jest' 'String' null' lub nie, więc jeśli spróbujesz użyć, że' String' nie dostać 'NullPointerException' –

+0

@ahmedghanayem Nie, pytałam dlaczego krykiet napisał String # isEmpty zamiast String.isEmpty, ale ten link wyczyścił to dla mnie. –

+0

zdałem sobie sprawę, może po prostu użyć zmiennej zamiast klasy, aby uniknąć dalszych nieporozumień –

3

W klasie TextUtils

public static boolean isEmpty(@Nullable CharSequence str) { 
    if (str == null || str.length() == 0) 
     return true; 
    else 
     return false; 
} 

sprawdza czy długość łańcucha wynosi zero, a jeśli ciąg jest null, aby uniknąć rzucania NullPointerException

w klasie String

public boolean isEmpty() { 
    return count == 0; 
} 

sprawdza czy długość łańcucha to tylko zero, może to spowodować NullPointerException, jeśli spróbujesz użyć tego ciągu i będzie on pusty.

4

Spójrz na doc

dla String#isEmpty one określać:

logicznych
isEmpty() Zwraca TRUE jeśli i tylko wtedy, długość() 0.

i dla TextUtils.isEmpty w dokumentacji objaśniono:

public static boolean isEmpty (CharSequence str)

Zwraca wartość true, jeśli ciąg ma wartość zerową lub długość 0.

więc główną różnicą jest to, że za pomocą TextUtils.isEmpty, to nie obchodzi czy nie trzeba by sprawdzić, czy ciąg jest zerowy lub nie odwołuje,

w innym przypadku tak.

+0

myślę notacji kropki na 'TextUtils.isEmpty' większy sens, ponieważ jest to metoda statyczna –

Powiązane problemy