如何分配对象而不将它们保存在变量中?

时间:2012-04-28 01:33:43

标签: java

在我的Java书中,有一个练习要求你:“分配10000个Rational对象而不将它们保存在变量中,它们就变成了垃圾。”

低于正确的方式分配对象而不将它们分配给变量?

    for (int i = 0; i < 10000; i++) {
        new Rational();
    }

由于

2 个答案:

答案 0 :(得分:2)

这是正确的,每个Rational都是在没有引用的情况下实例化的,因此在某些时候会被垃圾收集。 Java无法强制进行垃圾回收,但您可以调用Runtime.gc()来请求垃圾回收。

答案 1 :(得分:1)

是的,只要构造函数没有副作用,例如保留引用。

class Rational {
    static final List<Rational> IRRATIONAL = new ArrayList<Rational>();

    Rational() {
        IRRATIONAL.add(this);
    }

    static Iterable<Rational> allRationals() {
        return IRRATIONAL;
    }
}


for (int i = 0; i < 10000; i++) {
    new Rational();
}

for(Rational r: Rational.allRationals()) {
    // all still here
}