2012-10-14 50 views
-3

我想知道当我将静态对象分配给非静态对象时会发生什么? 例如:当我将静态对象分配给非静态对象时会发生什么?

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; 
    } 
} 
+0

这不是一个真正的问题... – OmniOwl

+0

你不是。 'getBoneCpPool()'返回一个新对象... – slugonamission

+0

'new BoneCpPool'创建了一个对象... –

回答

1

静态对象实际上不存在。

在这种情况下,static关键字被称为getBoneCpPool()方法。这是完全合法的,静态方法返回一个BonceCp对象的实例。

static修饰符关键字可以应用于方法,并且表示不属于某个类的特定实例的方法,而是指向该类本身的方法。

static modifier关键字也可以应用于字段(实际上是对象的静态引用)。在这种情况下,表示不属于某个类的特定实例的字段,而是在相同类型的所有类实例之间共享。

+0

非常感谢:) – olyanren

0

这是不是真的分配静态对象的非静态对象。

BoneCp cp = BoneCpLoad.getBoneCpPool(); 

这条线相当于

BoneCp cp = new BoneCpPool(); 

哪个是对象的只是一个普通的实例化。

0

这整个问题是基于一个错误的前提。

在Java中,不存在static这样的对象。所有对象都生活在堆中,它们的生命周期由可达性决定。

还有这样的东西作为static变量。但是,当您分配对static变量的引用时,没有什么特别的事情发生。该变量现在只包含对该对象的引用。同样,当您将static变量中的引用赋值给任何其他类型的变量时,没有什么特别的情况发生。

相关问题