情形大概如下面描述:
类a:
class a{
private b;
public b getB{
  return this.b;
  }
static a instance=new a();
}类b:
class b{
private c;
public c getC{
 return c;
  }
}类c:
class c{
private map  m= new HashMap();
}每次访问b都是通过 a.instance.getB();当程序运行到一段时间后有时会出现a.instance.getB();不同的时候获取的实例不是同一个,这种情况出现的机率不是很多,我想问的是a.instance能不能保证在程序jvm内保证只有一个实例,a.instance.getB()是在什么时候产生了新了实例。这段代码的隐患是在那里。谢谢主

解决方案 »

  1.   

    照你这样看这个b是没有创建的.
    首先你去看看单例模式,确保class  a只会产生一个实例,当然产生它的过程中顺便把这个b也产生了
      

  2.   

    我觉得应该在a里加个判断。if(a.instance != null) 就不用在实例化了。
      

  3.   

    singleton模式,只创建一个静态实例,以后都不再创建了就可以了
      

  4.   

    a 对象中的b是有初始化的,在这里不用去关注他是不是null,首先是,
    a.instance能不能保证每次都是同一个对象。
      

  5.   

    a.instance应该每次都是同一个对象吧但是a.instance.getB()得到的b应该还没有被实例化