感谢您的阅读,代码如下:
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/