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

Java 如何分配对象而不将其保存在变量中?,java,Java,在我的Java书中,有一个练习要求您:“分配10000个Rational对象,而不将它们保存在变量中,使它们成为垃圾。” 以下是分配对象而不将其分配给变量的正确方法吗 for (int i = 0; i < 10000; i++) { new Rational(); } for(int i=0;i

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

以下是分配对象而不将其分配给变量的正确方法吗

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

感谢这是正确的,每个
Rational
在没有引用的情况下被实例化,因此随后在某个点被垃圾收集。Java没有强制垃圾收集的方法,但您可以调用
Runtime.gc()
请求垃圾收集。

如果构造函数没有保留引用等副作用,则为True

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
}
class理性{
静态最终列表不合理=新建ArrayList();
Rational(){
不合理。加上(这个);
}
静态Iterable allRationals(){
回归非理性;
}
}
对于(int i=0;i<10000;i++){
新理性();
}
for(Rational r:Rational.allRationals()){
//都还在这里
}

你有一本奇怪的书。嗯。。。一万件?检查。他们理性吗?检查。分配给他们?检查。没有分配给他们?检查。看来你正确地完成了任务。但是我同意@ChristianMann的观点-你的书不是理性的对象:-)这本书的标题/作者是什么?