Setter和Getter功能.在Android中.性能开销?

Kev*_*vik 12 java getter setter android

当我学习Java标准版时,getter和setter函数经常用于隐藏变量并减少对它们的直接访问.有几个消息来源告诉我,在Android中你不应该使用这些函数,只能直接修改变量.原因是在Android中使用getter和setter时,由于开销导致性能下降.导致更多内存使用并减慢系统速度.

有没有道理呢?如果有,为什么使用getter和setter的性能损失?

Vin*_*nay 9

截至此处发现的使用getter和setter 的文档在android中是一个坏主意.正如它所说,

这对Android来说是一个坏主意.虚拟方法调用比实例字段查找要昂贵得多.遵循常见的面向对象编程实践并在公共接口中使用getter和setter是合理的,但在类中,您应该始终直接访问字段.

了解更多有关性能在这里.

  • 要添加到此:当方法*很简单*时,这主要指向使用此方法的*internal*获取和设置.对于良好的编程实践,*外部*调用值应该通过getter和setter; 应该通过[DRY](http://en.wikipedia.org/wiki/Don't_repeat_yourself)的方法进行内部非平凡的获取和设置. (6认同)

hun*_*ngr 7

根据谷歌android团队提供的性能提示:

没有JIT,直接字段访问速度比调用一个简单的getter快约3倍.使用JIT(直接字段访问与访问本地一样便宜),直接字段访问比调用一个简单的getter快约7倍.

但是我同意一个好的编码实践更重要,团队也提到:

请注意,如果您正在使用ProGuard,那么您可以充分利用这两个领域,因为ProGuard可以为您提供内联访问器.

因此我认为使用getter和setter是可以的;)

参考