感谢您的阅读,代码如下:

public class ClassA{

}
class ClassB{


    public String getValue()
    {
        ClassC classC;
        ^^^^^^^^^^^^^
        return classC.getValue();

    }
}

class ClassC{
String value;
    public String getValue()
    {
     value="test";
            return value;

    }
}


这将导致IDE在编译时响应“ classC可能未初始化”。
但是当我移动这一行时:“ ClassC classC;”到classB中的getVlalue()函数之外,IDE变得安静,并引发运行时错误。

谁能帮助解释原因?
非常感谢。

最佳答案

这是因为当Classc classC;移到getValue()函数之外时,它将成为其所在类的字段。Java将自动初始化所​​有未设置的字段。在这种情况下,由于它是一个对象,它将被初始化为null。我假设您遇到的运行时错误是NullPointerException

当它在方法内部声明时,不会自动初始化,您必须将其显式设置为某种值。由于您在使用它之前没有这样做,因此编译器抱怨。

关于java - 将变量放在类元素中时为什么不发生编译器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30961100/

10-16 01:41