下面的代码是合法的前向引用吗?如果是,为什么?
public class MyClass
{
private static int x = getValue();
private static int y = 5;
private static int getValue()
{
return y;
}
public static void main(String[] args)
{
System.out.println(x);
}
}
最佳答案
您拥有的上述代码是完全合法的 Java。在 Java 中,静态字段初始化如下:首先,将所有字段设置为其类型的默认值(0、false
或 null
),然后在它们被声明的顺序。这意味着上面的代码保证执行以下操作:
- 将
x
和y
设置为零,因为这是int
的默认值。 - 通过调用
getValue()
初始化x
,它读取y
的值。由于y
还没有被初始化,它的值仍然是 0。 - 将
y
初始化为5。
这意味着 x
将取值 0 而 y
将取值 5。此行为是可移植的且有保证的。 <强> You can see this here .
希望这对您有所帮助!
关于Java 合法前向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035890/