无需投下findViewById的结果?

最近我发现AndroidStudio提醒我删除一些类的投射。 我记得在旧时代,我们必须投下findViewById的结果,但现在没有必要。

findViewById的结果仍然是View,所以我想知道为什么我们不需要施放这个类?

我找不到任何提到的文件,谁能find任何文件?

从API 26开始, findViewById为其返回types使用推理,所以不再需要投射。

旧的定义:

 View findViewById(int id) 

新定义:

 <T extends View> T findViewById(int id) 

所以如果你的compileSdk至less是26,这意味着你可以利用这个:)

如果您使用View类中的常见属性(如可见性或一些常见方法,如onClick()) ,Android Studio会提醒您删除投射。

例如:

 ((ImageView) findViewById(R.id.image_car)).setVisibility(View.VISIBLE); 

在这种情况下,你可以简单地写:

 findViewById(R.id.image_car).setVisibility(View.VISIBLE); 

在旧版本中:

 AutoCompleteTextView name=(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView); 

在3.0与sdk 26:

 AutoCompleteTextView name = findViewById(R.id.autoCompleteTextView);