一个类有一个私有变量,整个类里没有一句把它设程null的, 
整个实现了静态单例,今天发现该变量变为null。 
什么情况会导致这种情况发生?

解决方案 »

  1.   

    1、私有变量默认就是null
    2、静态单例可能获取对象时没正确获取到
      

  2.   

    说错了,你定义后不给它赋值,它就是null
      

  3.   


    什么时候的事情?今天才发现啊?如果你能保证没有一句把它设置成null的话.那只有一个原因,就是初始化
      

  4.   

    类似这样
    public class Test {
    private Object object;
    private static Test test = null;
    private Test(){
    object = new Object();
    }
    public static Test getInstantce() {
    if (test == null) {
    test = new Test();
    }
    return test;
    }
    public static void main(String[] args){
    Test.getInstantce();
    while(true){
    Test.getInstantce().object.toString();
    //跑着跑着会报nullpoint?
    }
    }
    }
      

  5.   

    这段代码没问题啊,我也没跑出nullpoint来
      

  6.   

    我的代码只是打比方,我的工程是web工程,有大量其他线程在跑。
      

  7.   

    内存不足也是抛出异常啊,不是让你的私有变量变成null
      

  8.   

    public class Test {
    private static Object object;
    private static Test test = null;
    private Test(){
    object = new Object();
    }
    public synchronized static Test getInstantce() {
    if (test == null) {
    test = new Test();
    }
    return test;
    }
    public static void main(String[] args){
    Test.getInstantce();
    while(true){
    Test.getInstantce().object.toString();}
    }
    }
      

  9.   

    while(true)这个是一直在循环估计内存不足,然后JVM回收了内存中了test对象,所以就变NULL了
      

  10.   

    主要是方法要同步 synchronized
      

  11.   


    一般都是直接报outofmemery吧