Я только что наткнулся на это интересное сообщение от компилятора, и я не знаю, почему это происходит. Вот случай
Пример 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);
Я получу предупреждение Casting findViewById(R.id.someButtonId) to Button is redundant
.
Почему это происходит? Я не пытаюсь удалить предупреждение о приведении. Я хочу знать логику, стоящую за этим, и почему приведение не требуется, если я не пытаюсь инициализировать другой объект с помощью объекта, возвращаемого findViewById
.