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 ++中使用的结构一样
答案 0 :(得分:2)
看起来你正试图建立一个类似列表的结构。
通常的模式是:
class Ran {
Ran obj1 = null;
Ran() { initializer } }
void setObj1(Ran obj1) { this.obj1 = obj1; }
}
如果没有,那么你应该考虑在Ran类中构造递归对象的数据,而不是构造递归对象。