-2

静的オブジェクトを非静的オブジェクトに割り当てるとどうなるのだろうか? 例えば:

public class Test{
   public void test(){
      BoneCp cp=BoneCpLoad.getBoneCpPool();
   }
}

public class BoneCpLoad{
    private static BoneCpPool pool =new BoneCpPool();
    public static BoneCp getBoneCpPool(){
        return pool;
    }
}
4

3 に答える 3

1

静的オブジェクトは実際には存在しません。

この場合、static キーワードは getBoneCpPool() メソッドを参照します。これは完全に合法であり、静的メソッドは BonceCp オブジェクトのインスタンスを返します。

static 修飾子キーワードはメソッドに適用でき、クラスの特定のインスタンスではなく、クラス自体に属するメソッドを示します。

static 修飾子キーワードはフィールドにも適用できます (実際にはオブジェクトへの静的参照です)。この場合、クラスの特定のインスタンスに属していないが、同じタイプのすべてのクラス インスタンス間で共有されるフィールドを示します。

于 2012-10-14T12:17:49.557 に答える
0

これは実際には静的オブジェクトを非静的オブジェクトに割り当てているわけではありません。

BoneCp cp = BoneCpLoad.getBoneCpPool();

この行は次と同等です

BoneCp cp = new BoneCpPool();

これは、オブジェクトの通常のインスタンス化です。

于 2012-10-14T12:17:32.147 に答える
0

この質問全体は、誤った前提に基づいています。

Java には、オブジェクトのようなものはありませんstatic。すべてのオブジェクトはヒープに存在し、その寿命は到達可能性によって決まります。

変数のようなものがありますstatic。ただし、static変数への参照を割り当てても、特別なことは何も起こりません。変数には、オブジェクトへの参照のみが含まれるようになりました。static同様に、変数内の参照を他の種類の変数に割り当てても、特別なことは何も起こりません。

于 2012-10-14T12:17:38.823 に答える