2 shjniu3000 shjniu3000 于 2016.01.29 11:54 提问

类初始化问题,类中包含自身静态属性

类初始化先初始化静态属性,如果静态属性是自身对象,那个如何处理,如下代码

public class Test {
public static Test t = new Test();
}

这样的话是不是就递归了,实际应该不是,这应该怎么解释,求教 谢谢

2个回答

qq_25250467
qq_25250467   2016.01.29 13:10
已采纳

楼上说的对,你这样写相当于
public class Test{
static{
public Test t = new Test();
}
}
static块在类被实例化时,永远只会被调用一次,所以不会构成递归,去掉static就会形成递归

shjniu3000
shjniu3000 明白了,感谢
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.01.29 11:57

public static Test t = new Test();不构成递归,因为new Test调用的是实例构造函数,而static初始化放在静态构造函数,不是一个函数。
去掉static就会无限递归。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!