ViewHolder定义时类型为static

1.为什么用static。

经常看到有人说“内部类”和“静态内部类”,其实这种说法不准确。“静态内部类”的正确说法是“静态嵌套类“或者”嵌套类“,ViewHolder用的就是嵌套类。内部类是所在类的一部分,可以彼此互相访问实体。而嵌套类的最大特征是相对独立,不能访问所在类的方法和实体,占用资源更少,所以这里用嵌套类。当然如果你想去掉static用内部类的话也可以,只是会略微多浪费一些资源。

2.为什么不用set和get。

set和get是传统OOP中的一个很好的编码习惯,主要就是为了encapsulation。但是这里为什么不用,因为java不像其他编程语言比如C++能够做到inline来节省调用函数的开销。楼上有人说这个开销可以忽略不计,但是想想如果有一个简单的循环,每次都要访问一个成员变量并赋值,利用get或者set造成的调用开销甚至大于函数执行本身,这种情况的函数执行效率就非常低。在JVM中这种情况更甚,因为JVM中在编译阶段如果不用ProGuard就没有inline(执行阶段有没有不知道,可能会有适当的额优化),而且虚拟函数的调用开销更大。所以Android推荐在class的外部接口中遵循set和get原则,但是如果在内部,一律用直接访问成员变量的方式,所以这个不是楼上有人说的习惯,而是Android要求的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值