コンパイラからのこの興味深いメッセージに出くわしましたが、なぜそれが起こっているのかわかりません。ケースはこちら
例 1。
Button test = (Button) findViewById(R.id.someButtonId);
test.setOnClickListener(this);
例 2。
findViewById(R.id.someButtonId).setOnClickListener(this);
最初の例では、によって返されたオブジェクトを to にキャストする必要がありfindViewById
ますButton
。Button
2 番目の例では、別のクラス オブジェクトを使用していないため、返されたオブジェクトをキャストする必要はありません。経由でキャストしようとすると
((Button)findViewById(R.id.someButtonId)).setOnClickListener(this);
警告が表示されCasting findViewById(R.id.someButtonId) to Button is redundant
ます。
なぜこうなった?キャスト警告を削除しようとしていません。この背後にあるロジックと、 によって返されたオブジェクトで別のオブジェクトを初期化しようとしない場合、キャストが必要ない理由を知りたいですfindViewById
。