Android中的不可变对象有多贵?

时间:2015-11-29 18:10:47

标签: java android immutability

假设我想创建一个表示复数的类。该对象只包含两个浮点数,但当然有很多方法。

class Complex extends Number implements Comparable {

    float mReal, mImaginary;

    public Complex(float r, float i) {
        mReal = r;
        mImaginary = i;
    }

    /**
     * Set the value of this
     */
    public void set(float r, float i) {
        mReal = r;
        mImaginary = i;
    }

    /**
     * Add other to this
     */
    public void add(Complex other) {
        mReal += other.mReal;
        mImaginary += other.mImaginary;
    }

    // And so on and so forth
}

我知道通过使这个变为不可变,我可以简化生活,但这意味着更多的对象创建和垃圾收集。有没有人知道这种创造和破坏在Android中有多昂贵? (而不仅仅是最新版本;我也想支持运行2.x的设备。)

1 个答案:

答案 0 :(得分:1)

我的建议是不要担心这一点,然后继续使用不可变对象创建应用程序。

  

您是否应该担心这完全取决于您创建这些对象的位置和时间

我的评论更多的是要求您询问是否要在应用中的关键点执行昂贵的操作(例如在抽奖期间)。听起来好像你不是。

有趣的是,根据我的经验,使用不可变对象模式并没有对我所使用的应用程序中的内存或性能产生显着影响。也就是说,虽然可能会产生影响,但从来没有明显放缓的原因。

(不可否认,我的专业经验来自API 14 +。)