<servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>Singleton</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
public class Singleton {
private static Singleton sing = null;

public Singleton() {
if(sing == null) {
sing = new Singleton();
}
System.out.println("Singleton+++++++++++++++++++");
sing = new Singleton();
}
}启动tomcat时,我就要执行这个类,构造方法里有一个if判断,现在的问题是:
有if判断,就不能执行下面的打印
没有if判断,就能执行
这是怎么回事啊

解决方案 »

  1.   

    死循环了吧你的if中调用Singleton(),而这个方法里又if(sing == null) {,就又调用Singleton(),就又判断if,又调用Singleton()
    改成如下代码看看后台打印:public class Singleton {
        private static Singleton sing = null;
        
        public Singleton() {
            if(sing == null) {
                System.out.println("Singleton+++++++++++++++++++");//试试死循环
                sing = new Singleton();
            }
            System.out.println("Singleton+++++++++++++++++++");
            sing = new Singleton();
        }
    }
      

  2.   


    我想知道,第一次执行时,sing肯定是null,然后执行if方法,给sing实例化,这时它应该not null了才对呀。