赋值给静态final变量



我有一个类,它有自己的多个实例,我想知道是否有一种方法可以覆盖或抑制警告"变量'x'可能尚未初始化"。

class Main{
public Main(){
Astronaut.GenerateData(5);
Astronaut me = new Astronaut();
}
}
class Astronaut extends Player{
private static final int HEIGHT;
public Astronaut(){
super();
/*Does stuff*/
}

public static void GenerateValues(int valueToBeUsed){
HEIGHT=valueToBeUsed;
}
}

我已经尝试了很多不同的选择,我知道解决这个问题的方法,但总的来说,如果我能这样做,代码会更干净。

首先,我认为您不应该在Player类中将HEIGHT声明为static变量。但这可能是一个测试代码,所以这取决于你。

说到这个问题,我不确定你提到的是什么解决方案,但这个代码是wrong,因为以下问题:

  1. final变量没有被JVM分配默认值,您需要用一些值初始化它。
  2. static final类变量应该在声明时或在static块中初始化。
private static final int HEIGHT;
static {
HEIGHT = 10;
}
  1. 不能给final变量赋新值。所以这个HEIGHT=valueToBeUsed;会导致编译错误。

根据上面的提示,你得到的一定不是一个简单的警告,而是一个编译时错误。

最新更新