对象的递归实例化?

时间:2014-01-18 14:19:54

标签: java

public class ran {

    ran obj1 = new ran();//will this create a recursive instantiating of objects??
    public String s = null;

    public static void main(String[] args) {

        ran obj2 = new ran();
        obj2.s = "main";
        obj2.obj1.s = "secondary";
        System.out.println(obj2.obj1.s);

    }

}
  

上面的代码给出了堆栈溢出错误。所以究竟是什么   发生在这里? obj2被实例化,并被实例化   然后obj1和obj1再次实例化run class的另一个对象   一条链形成了??

     

如果是,那么是否有一种解决方法而不将obj1设为静态?

关于伙伴气垫船的特殊要求..

编辑问题=我试图复制一个自引用结构,就像链接列表中c / c ++中使用的结构一样

1 个答案:

答案 0 :(得分:2)

看起来你正试图建立一个类似列表的结构。

通常的模式是:

class Ran {
    Ran obj1 = null;
    Ran() { initializer } }
    void setObj1(Ran obj1) { this.obj1 = obj1; }
}

如果没有,那么你应该考虑在Ran类中构造递归对象的数据,而不是构造递归对象。