0

DimensionオブジェクトとPointオブジェクトを作成しましたが、これらのオブジェクトの両方に名前を付けて、メソッド呼び出しの引数内でそのコンストラクターを呼び出す必要はありません。なぜこれが可能なのか説明してもらえますか?私は自分のオブジェクトに名前を付けることにあまりにも慣れているので、質問の説明が必要です。

import java.awt.Dimension;
    import java.awt.Point;

    import javax.swing.JFrame;


    public class GameFrame extends JFrame {

        public GameFrame()
        {

            // call this method to the GameFrame object 
            // if you do not call this method the JFrame subclass will not actually close
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // set size to an appropriate size
            // create a dimension object 
            setSize(new Dimension(600,600));

            // upon creating the object set the location of the frame to the center of the screen
            setLocation(new Point (500,300));

            // prevent the user from resizing the GameFrame object
            setResizable(false);
        }

    }
4

5 に答える 5

3

variable、またははidentifier、オブジェクトがメモリ内で占めるスペースを単に指します。Javaでは、オブジェクトは参照によってメソッドに渡されます。 したがって、メソッドの呼び出しで新しいオブジェクトを作成すると、そのオブジェクトの場所への参照を提供しているため、そのメソッドはメモリに格納されているオブジェクトにアクセスできます。名前付き変数に参照を格納しなかったため、メソッドの完了後の後続のアクションはオブジェクトにアクセスできません。

于 2012-09-07T04:44:03.003 に答える
1

名前でオブジェクトを参照していません(インスタンスをメソッドに渡すだけです)。オブジェクトを参照する場合、その参照を通じて、指定されたscopでそのオブジェクトに対してさらに操作を実行できます。

指定されたスコープ内のそのオブジェクトに対してそれ以上の操作を行う必要がないと思われる場合は、参照なしでオブジェクトを作成できます。

于 2012-09-07T04:44:56.497 に答える
1

あなたが書くとき

setSize(new Dimension(600,600));

Dimensionオブジェクトを作成してメソッドに渡すときに、実際にはオブジェクトの参照を保存しています。

これはうまく機能し、個別に計算するためにオブジェクトをさらに使用する必要がない場合に推奨されます。

于 2012-09-07T04:53:13.593 に答える
1

基本的にあなたがそれをすることは以下と同等です:

Dimension dimension = new Dimension(600,600);
setSize(dimension);

これはまったく同じことですが、それはdimensionその新しいオブジェクトの単なる識別子です。新しいオブジェクト以外の場所で使用する必要がない場合、これはスペースの無駄です。

setSizeメソッドは、新しいオブジェクトをスーパークラスの変数に渡します。これによりJFrame、オブジェクトが保持され、クラスGameFrameはそのスーパークラスを介してオブジェクトにアクセスできるようになります。Javaでは、すべてのオブジェクトに少なくとも1つの参照が必要です。そうでない場合、オブジェクトはガベージと見なされて削除されます。

また、に名前を付けてもdimension、4行のコードを実行すると、変数はスコープ外になり、削除されます。

私が助けてくれたことを願っています:)

于 2012-09-07T06:02:22.840 に答える
0

これは匿名クラスと呼ばれる機能であり、オブジェクトの参照についてはあまり気にしませんが、実際に気にするのはオブジェクトの機能/動作です。これは関数型プログラミングでもっとわかります。

この機能の詳細はこちら

于 2012-09-07T04:48:28.397 に答える