一般的问题是,如果在 A类中创建了一个(全局)对象,则每次静态方法创建时都会在 A类中创建一个新对象。由另一个类调用?
我的猜测是肯定的,因为声明本身会创建对象,但我无法找到有关此特定情况的任何澄清(可能是因为这是一个愚蠢的问题)。
public class Helper {
private static Object x = new Object();
public static void method1(){
//uses x
}
public static void method2(){
//uses x
}
}
使用Helper的主要类
public class Main{
public static void main(String[] args){
Helper.method1();
Helper.method2();
}
}
在上面的示例中,由于这些调用,是否创建了2个对象? (不询问是否创建了2个Helper对象)
我可能会重新考虑辅助类的设计,但这使我想要得到最初问题的答案。
非常感谢任何澄清!
答案 0 :(得分:1)
来自JLS 8.3.1.1
如果一个字段被声明为静态,则无论该类最终可以创建多少个实例(可能为零),都存在字段的一个实体。初始化类(§12.4)时,会生成静态字段(有时称为类变量)。
因此,对象只创建一次,因为static
字段只创建一次。
答案 1 :(得分:-1)
流程如下(简化):
Main
类已加载Main.main()
方法称为Helper
类已加载x = new Object()
Helper.method1()
被称为Helper.method2()
被称为