最近,我发现AndroidStudio提醒我删除一些类强制转换。我记得在过去,我们必须强制转换findViewById的结果,但是现在没有必要了。findViewById的结果仍然是View,所以我想知道为什么我们不需要强制转换类?我找不到提到的任何文档,有人可以找到任何文档吗?
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
从API 26开始,findViewById将推理用作其返回类型,因此您不再需要强制转换。
旧定义:
View findViewById(int id)
新定义:
<T extends View> T findViewById(int id)
因此,如果您compileSdk的年满26岁,则意味着您可以使用此:)
catspeake
TA贡献1111条经验 获得超0个赞
根据这篇文章:
以下函数依赖于Java的泛型自动类型推断,从而消除了手动转换的需要:
protected <T extends View> T findViewById(@IdRes int id) {
return (T) getRootView().findViewById(id);
}
九州编程
TA贡献1785条经验 获得超4个赞
如果您使用View类的常用属性(例如可见性)或某些常用方法(例如onClick()),则Android Studio会提醒您删除投射
例如:
((ImageView) findViewById(R.id.image_car)).setVisibility(View.VISIBLE);
在这种情况下,您可以简单地编写:
findViewById(R.id.image_car).setVisibility(View.VISIBLE);
- 3 回答
- 0 关注
- 687 浏览
添加回答
举报
0/150
提交
取消