Android开发人员:避免内部获取者/设置者?

我正在阅读Android Dev Guide中的这一部分:

这里

我想知道什么是“虚拟方法调用”,当它使用getter / setter说“本地”时,它意味着什么? 我试图弄清楚他们说的是避免使用方法EVER(例如来自实例化对象的方法)还是仅仅在已经在工作的类中获取变量?

总而言之,如果我在不同的类中,并且想知道另一个类中的变量的值,那么执行otherclass.getX()比执行其他otherclass.x更昂贵吗? 或者,如果它不在当前类中执行方法或直接访问公共变量,它是否具有相同的性能?


使用getter和setter会更加昂贵,因为首先VM会从虚拟方法表中查找方法,然后进行调用。 为了在Android上更快地访问,直接访问成员变量减少了开销


在那篇文章中,他们指的是内部访问私有成员,并直接在字段中进行访问,而不是在同一个类中调用getX()。

仍然建议(和普通)使会员私密并提供公共访问者方法供外部使用。

HTH


这篇文章基本上是说当你可以避开它时,避免吸气/呼吸模式。 在Java中,所有方法都是虚拟的,没有用private或final修饰符标记,所以他们说如果你的代码不是由其他类实现的接口,直接访问这些字段。 他们指出的原因很可能是因为传统上,Java建议始终使用getter / setter模式,以便您的变量可以保持私密。 然而,在Android中,如果添加这个额外的抽象层,则可以获得相当精彩的性能。

总而言之。 如果你正在创建一个其他类将实现的API,那么也许值得让getter / setter的性能受到影响。 但是,在你自己的类中,每个类都与每个类互相作用,而你没有执行合约,只需直接访问变量。 访问您班级的外部班级也会通过直接访问变量来获得相同的绩效提升,但在某些时候,您需要进行绩效维护性评估,以查看您是否愿意公开这些变量或是否值得命中并使用getter / setter方法

链接地址: http://www.djcxy.com/p/23675.html

上一篇: Android Dev: Avoiding Internal Getters/Setters?

下一篇: Is there a way to automatically generate getters and setters in Eclipse?