4

new結果のオブジェクトを参照に割り当てない場合のキーワードの使用法は何ですか?

こちらがサンプルです。

public static void main(String[] args) {ample.
    Display display = new Display();

    new SWTApp(display);

    display.dispose();
}
4

6 に答える 6

4

おそらくこの場合、コンストラクターSWTAppは、アプリケーションが閉じられるまで実際にアプリケーションを実行します。それは私には素晴らしい設計のようには思えませんが、言語には実際にそれを防ぐものは何もありません。

于 2012-07-30T12:12:58.557 に答える
1

新しいオブジェクトを作成したいだけで、そのオブジェクトに何も設定する必要がない場合は、変数に割り当てる必要はありません。

于 2012-07-30T12:08:00.263 に答える
0

Java では、new キーワードを使用してオブジェクトを作成します。オブジェクトが作成されるとどうなるか、JVM はすべてのメンバー変数とメソッドにメモリを割り当て、AND コンストラクターが呼び出されます。通常、あるオブジェクトへの変数参照を保存したいのですが、新しいオブジェクトから必要なものがコンストラクターによって既に実行されていることがわかっている場合は、言及した初期化を行うことができます (ただし、非常に悪い習慣です)。

例えば

public class PrintFile{
public PrintFile(String fileName)
{
//code to print the file on printer or file system
}
}

今、私たちは簡単に言うことができます

new PrintFile(filetoprint);

作業はコンストラクター自体で行われるため、オブジェクト参照を保存する必要はありません。

于 2012-07-30T12:26:39.203 に答える
0

Standard Widget Toolkit (SWT) は、Java プログラミング言語用のグラフィカル ウィジェット ツールキットです。

プラットフォームに関係なく、グラフィカル アプリケーションには個別のエントリ ポイントがあり、表示可能なリソースとキューイング メカニズムを作成して、それらのリソース間でイベントを発生させ、結果としてアプリケーション内のコントローラー オブジェクトを呼び出します。(例: ボタン アクション イベント、ウィンドウ オープン イベント)

これらのオブジェクトのいずれかへの参照を保存する必要がないという事実は、これらのようなコンストラクターは通常、直接処理する必要のないアプリケーション エントリ ポイントの表現であるため、それほど重要ではありません。

コンストラクターは、渡されたオブジェクトを操作するのではなく、渡された初期状態を初期ウィンドウまたは初期構成として使用して、コンテキストでアプリケーションを実行するための開始点としてそれを受け入れます。

気になるコンストラクタのコードは次のとおりです。

public SWTApp(Display display) {

    Shell shell = new Shell(display);
    shell.setText("Center");
    shell.setSize(250, 200);

    center(shell);

    shell.open();

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
}

アプリを作成してください。これはユーザー関連のインスタンスではなく、アプリケーションのエントリ ポイントであるため、心配する必要はありません。ちなみに、グラフィカル アプリケーションのこの初期構成は、ほぼすべての言語のグラフィカル アプリケーションの他のほぼすべてのエントリ ポイントと同じように見えます。

乾杯!

于 2012-07-30T13:46:07.513 に答える