public class AAAAA
{
   public AAAAA()
   {}
   public AAAAA aaa=new AAAAA();
}
当我在外部声名这个类的时候就进入死循环了,
想问:怎样写这个AAAAA类能在里边自己声名自己AAAAAA?

解决方案 »

  1.   

    奇怪的想法。public class AAAAA
    {
      public AAAAA()
      {}
      public AAAAA aaa;
      public void InitAAAA
      {
          aaa=new AAAAA();
      }
    }在外部代码中,显示的调用InitAAAA方法,这样做就延迟了aaa的初始化;让它创建时间从AAAA创建的时候,延迟到外部调用InitAAAA方法时候。
      

  2.   

    aaa必须是静态的,用static修饰。
    调用构造前必须对成员aaa完成初始化,但aaa不是静态的情况下,造成aaa的初始化依赖于构造完成,
    构造调用前又必须成员初始化完成,死循环了。
    所有静态成员的初始化为null,调用赋值语句new AAAAA前再初始化其它非静态成员,之后调用构造。
      

  3.   

    这样不会死循环,如果 A a=new A() ; 放到构造函数里面了 会死循环,但是
    编译能通过,运行时候有提示Process is terminated due to StackOverflowException.
      

  4.   

    不是不符合。有很多类都是这样写的。你可以屏蔽构造器,只用这个类的静态属性 返回该类的一个实例。这也算是单价模式吧。
    aaa必须是静态的,用static修饰。
    调用构造前必须对成员aaa完成初始化,但aaa不是静态的情况下,造成aaa的初始化依赖于构造完成,
    构造调用前又必须成员初始化完成,死循环了。
    所有静态成员的初始化为null,调用赋值语句new AAAAA前再初始化其它非静态成员,之后调用构造。
      

  5.   

    单件模式这是flex的。                public function GetXML()
    {
    }
    public static function get instance():GetXML
    {
    if(_instance == null)
    _instance = new GetXML();
    return _instance
    }