在一个类中定义本身的实例对象时为什么要加static?

来源:2-1 单例模式的饿汉式实现

csbin

2015-01-15 19:23

class A{
    int i=0;
    A(){
        System.out.println("make a A");
    }
    A a=new A();
}
class B{
    int i=0;
    B(){
        System.out.println("make a B");
    }
    static B a=new B();
}

class A创建实例时会发生栈溢出,原因是循环定义,而为什么class B实例化时,不会报错


写回答 关注

1回答

  • 在右边
    2015-01-15 19:43:03

    static 让B实现了单例,也就是说在虚拟机中实际上只是实例化两次。


    而A是一个相当于无限循环的实例化

模式的秘密---单例模式

单例模式是在Java中最重要模式之一,让我们揭开单例模式神秘面纱

74409 学习 · 108 问题

查看课程

相似问题