在构造函数中初始化静态最终字段

2024-01-11

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(使用前将#替换为@)

在构造函数中初始化静态最终字段 的相关文章

随机推荐