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

时间:2012-12-19 02:23:57

标签: java android setter getter

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

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

3 个答案:

答案 0 :(得分:9)

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

  

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

详细了解效果here

答案 1 :(得分:7)

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

  

没有JIT,直接字段访问速度比调用a快3倍   琐碎的吸气剂。使用JIT(直接现场访问便宜)   访问本地),直接字段访问速度比快7倍   引用一个微不足道的吸气剂。

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

  

请注意,如果您使用的是ProGuard,则可以充分利用它们   世界,因为ProGuard可以为您内联访问器。

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

Reference

答案 2 :(得分:4)

安装者和吸气剂的性能损失可以忽略不计。公共领域是不好的做法,违反了面向对象的数据封装和信息隐藏原则。

使用setter或getter需要一个属性调用,而不是直接访问该字段。这没什么,所以不要担心 - 专注于编写好的代码。

编辑:

澄清一下,这是来自其他海报引用的同一个Android文档:

  

遵循常见的面向对象编程实践是合理的   并且在公共界面中有getter和setter,但是在a   你应该总是直接访问字段。

换句话说,你仍然需要getter和setter。您应该尽量避免在拥有这些方法的类中调用它们,因为您可以直接访问该字段。