2

私はいくつかのlwjglのチュートリアルを見ていて、クラスを変数でインスタンス化したままにする代わりに、オブジェクトを保存せずにインスタンス化してメソッドを直接呼び出すことに気づきました。

後でオブジェクトを再利用する必要がないときにこれを行うのが良いのか、それとも常にオブジェクトを保持するのが最善なのか、疑問に思いました。

私はこれを意味します:

(new Lesson02()).run(fullscreen);

代わりに:

Lesson02 l2 = new Lesson02();
l2.run(fullscreen);

ありがとう。

4

7 に答える 7

3

後でオブジェクトを使用する予定がない場合でも、実際には違いはありません。したがって、オプション1で問題ありません。オプション2に従いl2、コードの後半で使用しなくなった場合は、とにかくガベージコレクションが行われます。

于 2011-05-28T20:46:34.723 に答える
2

後でオブジェクトを使用する必要がない限り、最初のオプションで問題ありません。

于 2011-05-28T20:43:53.813 に答える
2

コンストラクターと関数に多くのパラメーターがない限り、私は通常最初のオプションを使用します。それから、読みやすくするためにそれを分割することを好みます。一般的なルール:より理解しやすく、読みやすいものを使用してください。

于 2011-05-28T20:45:08.960 に答える
2

Javaはガベージコレクションされた言語であるため、最初の方法は完全に受け入れられます。コンパクトですっきりしているので、2つ目よりも気に入っています。

于 2011-05-28T20:46:43.160 に答える
2

2つのオプションは実質的に同じです。

コンパイラーが最適化に苦手な場合、最初のコンパイラーはGCによって迅速に再利用される可能性が高いため、非常に高速になる可能性があります。

于 2011-05-28T20:48:05.330 に答える
2

前者のオプションは、とにかく一時的な参照変数を作成します。名前付きまたは名前なしの場合、ヒープ上のオブジェクトを参照するローカル変数があります。二度と使用されない場合は、ガベージコレクターがクリーンアップします。

2つのオプションは読みやすさだけが異なるため、その観点からお好みのオプションを選択できます。

于 2011-05-28T20:49:48.777 に答える
1

Javaがメモリを割り当てることができるため、最初の方法が最もよく受け入れられます。

于 2011-05-28T21:50:10.647 に答える