.length() vs .getText(). length() vs .getText(). toString(). length()
Например, в коде ниже a
и b
и c
равны.
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();
В чем разница между length()
и getText().length()
и getText().toString().length()
?
Ответы
Ответ 1
.length()
и getText().length()
идентичны в их текущей реализации.
.getText().toString().length()
преобразует CharSequence
в простой String
, а затем вычислит его длину. Я бы ожидал, что во многих случаях вернуть то же значение, что и два других. Однако, если CharSequence
является чем-то вроде SpannedString
, я не могу исключить, что существует некоторый тип диапазона форматирования (например, ImageSpan
), который влияет на вычисления длины.
Ответ 2
Это вопрос производительности.
length
будет делать то же самое, что и getText
и length
, это просто избавит вас от ввода getText()
.
Из класса TextView
, который EditText
расширяет:
public CharSequence getText() {
return mText;
}
/**
* Returns the length, in characters, of the text managed by this TextView
*/
public int length() {
return mText.length();
}
Что касается toString
, это то же самое, однако любое преобразование, которое вы делаете (CharSequence
= > String
), будет стоить вам небольшой производительности (так мало вы, вероятно, не заметите его).
Кроме того, когда вы конвертируете вещи, вам нужно искать исключения с нулевым указателем, возможно, не в этом случае, но, вообще говоря.
Чтобы ответить на вопрос, просто используйте length()
Ответ 3
-
length()
: - length()
function - это унаследованный метод для EditView
, который наследуется TextView
, который возвращает длину в символах текста, управляемого этим EditView
. Таким образом, он вернет длину текста, который пользователь помещает в EditView
Contorl.
-
getText().length()
: - здесь в этой функции length()
функция не принадлежит классу EditView
. В действительности эта функция length()
принадлежит классу CharSequence
, потому что getText()
возвращает объект CharSequence
. Итак, снова эта функция length()
вернет число символов в этой последовательности.
-
.getText().toString().length()
: - здесь toString()
метод Преобразовать объект CharSequence
в простой неизменяемый объект String
. Итак, здесь length()
функция принадлежит классу String
, которые также возвращают длину объекта String