当我学习Java标准版时,getter和setter函数经常用于隐藏变量并减少对它们的直接访问。有几个消息来源告诉我,在Android中你不应该使用这些函数,只能直接修改变量。原因是在Android中使用getter和setter时,由于开销导致性能下降。导致更多内存使用并减慢系统速度。
这有什么道理吗?如果有,为什么使用getter和setter的性能损失?
答案 0 :(得分:9)
截至文档发现here使用getter和setter在android中是一个坏主意。正如它所说,
这在Android上是一个坏主意。虚方法调用很昂贵, 实例字段查找要多得多。遵循是合理的 常见的面向对象编程实践,并有getter和 公共界面中的setter,但你应该始终在一个类中 直接访问字段。
详细了解效果here。
答案 1 :(得分:7)
根据Google android团队提供的性能提示:
没有JIT,直接字段访问速度比调用a快3倍 琐碎的吸气剂。使用JIT(直接现场访问便宜) 访问本地),直接字段访问速度比快7倍 引用一个微不足道的吸气剂。
但是我同意一个好的编码实践更重要,团队也提到:
请注意,如果您使用的是ProGuard,则可以充分利用它们 世界,因为ProGuard可以为您内联访问器。
因此我认为使用getter和setter是可以的;)
答案 2 :(得分:4)
安装者和吸气剂的性能损失可以忽略不计。公共领域是不好的做法,违反了面向对象的数据封装和信息隐藏原则。
使用setter或getter需要一个属性调用,而不是直接访问该字段。这没什么,所以不要担心 - 专注于编写好的代码。
编辑:
澄清一下,这是来自其他海报引用的同一个Android文档:
遵循常见的面向对象编程实践是合理的 并且在公共界面中有getter和setter,但是在a 你应该总是直接访问字段。
换句话说,你仍然需要getter和setter。您应该尽量避免在拥有这些方法的类中调用它们,因为您可以直接访问该字段。