Чтобы ответить на этот вопрос, мы можем взглянуть на исходный код.
TextView.getText()
, метод суперкласса, является довольно простым : он возвращает mText
.
mText
помечен как nullable , но, просматривая код, ничто не устанавливает его в null, и конструктор проверяет его , чтобы убедиться, что это не null
перед возвратом. Он помечен @UnsupportedAppUsage
, что означает, что, по крайней мере, сторонний код может получить к нему доступ посредством отражения.
Для некоторых дополнительных подсказок, если это то, что может разумно произойти, мы можем посмотреть на другое использование в TextView
, чтобы увидеть, является ли это допустимым состоянием. Такие методы, как length()
и другие, вызывают метод на mText
без проверки на ноль, поэтому, если он вернется к нулевому значению после возврата конструктора, вы увидите сбой.
Однако нам также нужно взглянуть на EditText
, потому что EditText
переопределяет getText()
. Там есть комментарий, который дает нам подсказку, которая нам нужна:
// This can only happen during construction.
if (text == null) {
В противном случае метод возвращает результат super.getText()
различными способами, поэтому применяется наш анализ выше: иначе он не может быть нулевым.
Еще одно место для проверки: TextInputEditText
переопределить getText()
? Это не так.
Итак, краткий ответ: нет, нет, если только у вас нет странного подкласса этого или вы вызываете его во время конструирования (что было бы возможно, только если вы сами подклассировали его) , Технически это не применяется, но на самом деле это не должно происходить со стандартными компонентами от Google, хотя Пункт CommonsWare ниже - это хорошая вещь, о которой следует помнить .