我刚刚从编译器中看到这条有趣的消息,但我不知道为什么会这样。这是案例
示例 1。
Button test = (Button) findViewById(R.id.someButtonId);
test.setOnClickListener(this);
示例 2。
findViewById(R.id.someButtonId).setOnClickListener(this);
在第一个示例中,我需要将由findViewById
to返回的对象强制转换Button
。在第二个示例中,我不必强制转换返回的对象,因为我没有使用另一个Button
类对象。如果我尝试通过
((Button)findViewById(R.id.someButtonId)).setOnClickListener(this);
我会收到警告的Casting findViewById(R.id.someButtonId) to Button is redundant
。
为什么会这样?我不是要删除演员警告。我想知道这背后的逻辑,以及如果我不尝试使用返回的对象初始化另一个对象,为什么不需要强制转换findViewById
。