避免在android中使用getter / setter方法

时间:2017-02-27 06:43:03

标签: java android performance

Android中是否存在避免Getter / Setter方法的替代解决方案?

我已经在使用getter / setter方法,但是在链接下面说,避免使用getter / setter方法。

如何使用不使用getter / setter google solution来访问集合对象?

3 个答案:

答案 0 :(得分:1)

getter和setter的使用是一个很长的论点。有理由支持和反对。 在大多数情况下,说使用setter确保封装是不正确的。

之间没有区别:

object.x = value;

object.setX(value);

这里讨论的一些例子:

Advantage of set and get methods vs public variable

Why use getters and setters?

Are getters and setters poor design? Contradictory advice seen

答案 1 :(得分:0)

从您提供的链接:

  

遵循常见的面向对象编程实践并在公共接口中使用getter和setter是合理的,但在类中,您应该始终直接访问字段。

从中我们学到两件事:

  1. 永远不要让你的字段public,这不尊重OOP原则;
  2. 只有当您不在课堂范围内时,才应使用getter/setter。在类中编写代码时,应始终直接访问该字段。以下是直接访问的访问速度:
  3.   

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

答案 2 :(得分:0)

从您提供的链接:

  

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

基本上它意味着你可以拥有getter和setter,但是当你想访问类自己的字段时,直接访问它。换句话说,你应该这样做:

class Foo {
    private int bar;

    public int getBar() { return bar; }
    public void setBar(int value) { bar = value; }

    public someOtherMethod() {
        // here if you want to access bar, do:
        bar = 10;
        System.out.println(bar);

        // instead of:
        // setBar(10);
        // System.out.println(getBar());
    }
}
// but outside of this class, you should use getBar and setBar
相关问题