2012-04-28 5 views
2

私のJavaの本では、「10000 Rationalオブジェクトを変数に保存せずに割り付けてゴミにする」という練習があります。変数を変数に保存せずにオブジェクトを割り当てる方法は?

オブジェクトを割り当てることなくオブジェクトを割り当てることができますか?正しいだ

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

おかげ

+8

あなたは奇妙な本があります。 –

+4

... 10 000オブジェクト?チェック。彼らはRationalですか?チェック。それを割り当てた?チェック。割り当てられていない?チェック。あなたは仕事を正しく完了したように見えます。しかし、私は@ChristianMannに同意する - あなたの本はRationalオブジェクトではない:-) – Imp

+1

本のタイトル/著者は何ですか? – Java42

答えて

2

は、各Rationalを参照せずにインスタンス化され、したがって、その後のある時点でガベージコレクションされています。 Javaにガベージコレクションを強制する方法はありませんが、Runtime.gc()に電話してガベージコレクションをリクエストすることができます。

+0

ご協力いただきありがとうございます – user1296058

1

コンストラクタに参照を保持するなどの副作用がないことを条件として、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 
} 
関連する問題