Я только что наткнулся на это интересное сообщение от компилятора и не знаю, почему это происходит. Вот случай
Пример 1.
Button test = (Button) findViewById(R.id.someButtonId);
test.setOnClickListener(this);
Пример 2.
findViewById(R.id.someButtonId).setOnClickListener(this);
В первом примере мне нужно преобразовать объект, возвращаемый findViewById
, в Button
. Во втором примере мне не нужно приводить возвращаемый объект, потому что я не использовал другой объект класса Button
. Если я попытаюсь применить его через
((Button)findViewById(R.id.someButtonId)).setOnClickListener(this);
, я получу предупреждение Приведение findViewById (R.id.someButtonId) к Button является избыточным
.
Почему это происходит? Я не пытаюсь удалить предупреждение о кастах. Я хочу знать логику этого и почему преобразование типов не требуется, если я не пытаюсь инициализировать другой объект с помощью объекта, возвращенного findViewById
.