java - style - textview android
.length() vs.getText(). length() vs.getText(). toString(). length() (3)
Por ejemplo, en el código debajo de a
y b
y c
son iguales.
EditText editText;
editText = (EditText) findViewById(R.id.edttxt);
editText.setText("1234");
int a, b, c;
a = editText.length();
b = editText.getText().length();
c = editText.getText().toString().length();
¿Cuál es la diferencia entre length()
y getText().length()
getText().toString().length()
y getText().toString().length()
?
length()
: la funciónlength()
es un método heredado paraEditView
queEditView
heredóTextView
que devuelve la longitud, en caracteres, del texto administrado por esteEditView
. Por lo tanto, devolverá la longitud del texto que el usuario puso en elEditView
EditView.getText().length()
: aquí, en esta declaración, la funciónlength()
no pertenece a la claseEditView
. En real, la funciónlength()
pertenece a la clasegetText()
porquegetText()
devuelve un objetoCharSequence
. Entonces, nuevamente esta funciónlength()
devolverá el número de caracteres en esta secuencia.-
.getText().toString().length()
: - aquí métodotoString()
Convierta el objetoCharSequence
en un objetoString
simple e inmutable. Por lo tanto, aquí la funciónlength()
pertenece aString
claseString
que también devuelve la longitud del objetoString
Es una cuestión de rendimiento. length
hará exactamente lo mismo que getText
y la length
que solo evita que getText()
. Desde la clase TextView
que se extiende EditText
:
public CharSequence getText() {
return mText;
}
/**
* Returns the length, in characters, of the text managed by this TextView
*/
public int length() {
return mText.length();
}
En cuanto a toString
, es lo mismo, sin embargo, cualquier conversión que hagas ( CharSequence
=> String
) te costará un poquito en rendimiento (tan poco que probablemente no lo notarás).
Además, cuando conviertes cosas, debes buscar excepciones de puntero nulo, tal vez no en esta instancia, pero en términos generales.
Para contestar la pregunta, solo usa long ()
.length()
y getText().length()
son idénticos en su implementación actual .
.getText().toString().length()
convertirá la CharSequence
en una String
simple, luego calculará su longitud. Yo esperaría que retorne el mismo valor que los otros dos en muchos casos. Sin embargo, si CharSequence
es algo como un SpannedString
, no puedo descartar la posibilidad de que exista algún tipo de intervalo de formato (por ejemplo, ImageSpan
) que afecte los cálculos de longitud.