public class A
{
private static final int x;
public A()
{
x = 5;
}
}
-
final
意味着变量只能分配一次(在构造函数中)。
-
static
意味着它是一个类实例。
我不明白为什么这会被禁止。这些关键词在哪里互相干扰?
每次创建类的实例时都会调用构造函数。因此,上面的代码意味着每次创建实例时都会重新初始化x的值。但是因为变量被声明为final(并且是static),所以你只能这样做
class A {
private static final int x;
static {
x = 5;
}
}
但是,如果删除静态,则可以执行以下操作:
class A {
private final int x;
public A() {
x = 5;
}
}
OR this:
class A {
private final int x;
{
x = 5;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)