猿问

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”相同的运行时错误,这是一个编译时错误。为什么局部变量和成员之间存在差异?

编辑:让会员私密是我最初的意图,问题仍然存在......


开满天机
浏览 726回答 3
3回答

慕哥9229398

明确分配的规则非常困难(阅读JLS第3版第16章)。在字段上强制执行明确的赋值是不切实际的。就目前而言,甚至可以在初始化之前观察最终字段。
随时随地看视频慕课网APP

相关分类

Java
我要回答