Java 不允许您使用可能尚未在方法范围内初始化的变量。类范围内的未初始化变量仍可能由类方法返回,并且值默认为 null。
为什么对两个不同的作用域进行不同的处理?
public class TestClass {
Integer i;
Double d;
public TestClass() {
d = 1d;
}
public Double getD() {
return d;
}
public Integer getI() {
return i;
}
// public Integer getSomeInt() {
// Integer i;
// return i;
// }
public static void main(String[] args) {
TestClass myClass = new TestClass();
System.out.println(myClass.getI().getClass());
}
}
这会导致 NullPointerException,但i
在 getSomeInt() 中返回是编译器错误,因为“变量可能尚未初始化”。