问题描述
- 类初始化问题,类中包含自身静态属性
-
类初始化先初始化静态属性,如果静态属性是自身对象,那个如何处理,如下代码public class Test {
public static Test t = new Test();
}这样的话是不是就递归了,实际应该不是,这应该怎么解释,求教 谢谢
解决方案
楼上说的对,你这样写相当于
public class Test{
static{
public Test t = new Test();
}
}
static块在类被实例化时,永远只会被调用一次,所以不会构成递归,去掉static就会形成递归
解决方案二:
public static Test t = new Test();不构成递归,因为new Test调用的是实例构造函数,而static初始化放在静态构造函数,不是一个函数。
去掉static就会无限递归。
时间: 2024-11-05 12:13:26