小编典典

Java中未初始化的变量和成员

java

考虑一下:

public class TestClass {

    private String a;
    private String b;

    public TestClass()
    {
    a = "initialized";
    }

    public void doSomething()
    {
    String c;

        a.notify(); // This is fine
    b.notify(); // This is fine - but will end in an exception
    c.notify(); // "Local variable c may not have been initialised"
    }

}

我不明白 “ b”从不初始化,但会给出与“ c”相同的运行时错误,这是编译时错误。为什么局部变量和成员之间存在差异?

编辑:将成员设为私有是我的初衷,但问题仍然存在…


阅读 401

收藏
2020-03-12

共1个答案

小编典典

确定分配的规则非常困难(请阅读JLS第三版的第16章)。在字段上强制执行明确分配是不现实的。就目前而言,甚至可以在初始化最终字段之前观察它们。

2020-03-12