Reluctant r = new Reluctant();
r这个对象定义了instance 变量 并对其进行了初使化

解决方案 »

  1.   

    Compiled from "TRRRR.java"
    public class test.TRRRR extends java.lang.Object{
    public test.TRRRR()   throws java.lang.Exception;
      Code:
       0:   aload_0
       1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
       4:   aload_0
       5:   new     #2; //class test/TRRRR
       8:   dup
       9:   invokespecial   #3; //Method "<init>":()V
       12:  putfield        #4; //Field instance:Ltest/TRRRR;
       15:  new     #5; //class java/lang/Exception
       18:  dup
       19:  ldc     #6; //String -->Reluctant Exception
       21:  invokespecial   #7; //Method java/lang/Exception."<init>":(Ljava/lang/St
    ring;)V
       24:  athrow
    循环引用构造 看标号5
      

  2.   

    死循环构造。你main里面new一个之后,初始化r的时候,r对象里面的成员instance又要初始化,instance new的时候又有成员instance..无限循环
      

  3.   

    private Reluctant instance = new Reluctant(); instance成为Reluctant类的一个属性,构造Reluctant 也会再调用new Reluctant()
      

  4.   

     大牛,这个怎么出来的,求方法技巧,想学习下javap -c xx.class