美文网首页
Android 使用findViewById需要进行类型转换吗?

Android 使用findViewById需要进行类型转换吗?

作者: Rimson | 来源:发表于2018-11-01 20:20 被阅读0次

从接触控件开始,Android开发者最熟悉的一行代码应该就是:
Button button = (Button) findViewById(R.id.button);
我第一次写这行代码的时候,刚学Java没几天,还不明白(Button)是什么意思,只是跟着书上敲出来,后来知道是用括号是强制类型转换。
但是有一天,突然看到自己的代码,(Button)打上了灰色波浪线,并提示:

Casting 'findViewById(R.id.button)' to 'Button' is redundant less... (Ctrl+F1)
This inspection reports unnecessary cast expressions.

也就是说这样的类型转换是没有必要的
既然类型转换没有必要,就说明通过findViewById()方法返回的View已经是我们需要的类型了
Ctrl+点击,进去可以看到:

@SuppressWarnings("TypeParameterUnusedInFormals")
    @Override
    public <T extends View> T findViewById(@IdRes int id) {
        return getDelegate().findViewById(id);
    }

返回对象已经是具体的,继承自View的对象例如Button,而不是直接返回View
但是刚开始学习的时候,很多教程都有这种加括号进行类型转换的写法,其实是API版本原因。
从API 26开始,findViewById()方法已经像上面一样,会自动返回需要的类型
而查API 25的源码,很容易看到:

@Override
    public View findViewById(@IdRes int id) {
        return getDelegate().findViewById(id);
    }

另推荐查源码的网站:
Android OS

相关文章

  • Android 使用findViewById需要进行类型转换吗?

    从接触控件开始,Android开发者最熟悉的一行代码应该就是:Button button = (Button) f...

  • ViewFindUtils

    用来替代findviewById方法 好处就是,使用时免去了强制类型转换:

  • 小知识点-API26开始findViewById不需要强制类型转

    findViewById不需要强制类型转化啦 最近发现,在编写 findViewById 时,我没有进行类型转化,...

  • 2019-02-28 语法专题之 数据类型转换

    1、使用Number()函数进行类型转换 2、使用String()进行类型转换 3、可以使用Boolean进行数据...

  • 告别findView和ButterKnife

    写在前面 在以往的android开发中,我们需要使用到findviewById方法来进行初始化view,所以对于页...

  • 自动转换函数

    内置类型间转换 自定义类型的类型转换 使用构造函数进行类型转换 例如 自动转换函数(运算符转换) 例子

  • 5 - TypeHandler-1

    当需要将jdbc类型的数据和Java程序中类型的书数据进行转换时,可以使用TypeHandler来完成转换过程。怎...

  • Android int颜色值和rgba颜色互转

    有的App后台网络颜色值使用的Android的int类型的颜色值。iOS使用RGBA的颜色值。怎么进行转换呢? 注...

  • Swift随笔 as? 逃逸闭包

    as 类型转换 向上转换 使用as? 进行向下转型操作;转换成功为可选类型, 转换失败nil as! 功能同as...

  • 类型转换

    由于java是强类型语言,所以要进行有些运算的时候,需要类型转换 从左到右是自动类型转换,从右到左是强制类型转换。...

网友评论

      本文标题:Android 使用findViewById需要进行类型转换吗?

      本文链接:https://www.haomeiwen.com/subject/odcfxqtx.html