-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

静态对象实际上并不存在。

在这种情况下,静态关键字指的是 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 回答