Я только что натолкнулся на это интересное сообщение от компилятора, и я не знаю, почему это происходит. Вот случай
Пример 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
.