无需强制转换findViewById的结果?

最近,我发现AndroidStudio提醒我删除一些类强制转换。我记得在过去,我们必须强制转换findViewById的结果,但是现在没有必要了。


findViewById的结果仍然是View,所以我想知道为什么我们不需要强制转换类?


我找不到提到的任何文档,有人可以找到任何文档吗?


蛊毒传说
浏览 688回答 3
3回答

红糖糍粑

从API 26开始,findViewById将推理用作其返回类型,因此您不再需要强制转换。旧定义:View findViewById(int id)新定义:<T extends View> T findViewById(int id)因此,如果您compileSdk的年满26岁,则意味着您可以使用此:)

catspeake

根据这篇文章:以下函数依赖于Java的泛型自动类型推断,从而消除了手动转换的需要:protected <T extends View> T findViewById(@IdRes int id) {&nbsp; &nbsp; return (T) getRootView().findViewById(id);}

九州编程

如果您使用View类的常用属性(例如可见性)或某些常用方法(例如onClick()),则Android Studio会提醒您删除投射例如:((ImageView) findViewById(R.id.image_car)).setVisibility(View.VISIBLE);在这种情况下,您可以简单地编写:findViewById(R.id.image_car).setVisibility(View.VISIBLE);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android