之所以无法最初编译代码,是因为该类
defaultValue是一个
实例变量
Test,这意味着在
Test创建类型的对象时,
defaultValue还将创建的唯一实例并将其附加到该特定对象。因此,无法
defaultValue在构造函数中进行引用,因为尚未创建引用,也没有创建对象。
解决方案是使最终变量
static:
public class Test { private static final int defaultValue = 10; private int var; public Test() { this(defaultValue); } public Test(int i) { var = i; }}通过创建变量
static,它变得与类本身相关联,而不是与该类的实例相关联,并且在的所有实例之间共享
Test。JVM首次加载类时会创建静态变量。由于在使用类创建实例时已经加载了该类,因此可以使用静态变量,因此可以在该类中使用它,包括构造函数。



