class  singleton
{       private static singleton  instance;
   private singleton()  {   }
  private singleton   getinstance()
  {   
     if (instance==null)
     { 
        instance=new singleton();
     }
     return instance;
  }
}public class testsingleton
{   
    
    
     public static void main(String[]  args)
       {
            singleton s1=singleton.getinstance();
            singleton s2=singleton.getinstance();
            System.out.println(s1==s2);
          
       }
}

解决方案 »

  1.   

    class singleton
    {     private static singleton instance;
      private singleton() { }
      private singleton getinstance()
      {   
         if (instance==null)
        {  
         instance=new singleton();
        }
        return instance;
      }
    }public class testsingleton
    {   
        
        
      public static void main(String[] args)
      {
      singleton s1=singleton.getinstance();
      singleton s2=singleton.getinstance();
      System.out.println(s1==s2);
        
      }
    }
    红色应该修改为: public static  singleton getinstance()
      {   
         if (instance==null)
        {  
         instance=new singleton();
        }
        return instance;
      }必须定义为静态方法,同时应该为public,否则外部类没办法通过类名.getinstance()获得单例类的示例
      

  2.   

    定义的时候 ,同时初始化掉;
    private static singleton instance = null ;