呵呵,楼主你真够高笑的!
Test atest = new Test(); 你认为这个语句能够执行完成吗?
最后的结果一定是栈溢出,StackOverflowError。
:)

解决方案 »

  1.   

    肯定是堆栈溢出
    java.lang.StackOverflowError
      

  2.   

    public Test()
     {
        test = new Test();
     }递归调用啊,怎么没有一个跳出条件呢?
      

  3.   

    但如果是
    public class Test{  public static Test test; 这样应该可以了吧?  public Test()
     {
        test = new Test();
     }}
      

  4.   

    TO sinperwolf() :
    这和你静态不静态没有关系的。你的构造函数jvm实际上是这么执行的:
    <<
    public Test();
      Code:
       0:   aload_0
       1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
       4:   new     #2; //class Test
       7:   dup
       8:   invokespecial   #3; //Method "<init>":()V
       11:  putstatic       #4; //Field test:LTest;
       14:  return
    >>
    递归之行发生在这里:
    <<   8:   invokespecial   #3; //Method "<init>":()V >>
    和是否静态还是非静态没有一点关系。你的问题是今天看到最有意思的问题了,呵呵。
      

  5.   

    但是Singleton模式中岂不是可以Singleton.getInstance().getInstance()......一直调用下去?
    public class Singleton {  private Singleton(){}  private static Singleton instance = new Singleton();
     
      public static Singleton getInstance() {
        return instance;   
       } 

      

  6.   

    TO sinperwolf() :
    呵呵,确实可以这样调用下去,但是这不是递归啊。不管你调用多少次,都是得到唯一的实例。
      

  7.   

    是不是Singleton.getInstance().getInstance()......与Singleton.getInstance()得到的是Singleton的同一个实例呢?