我有一个类,它有自己的多个实例,我想知道是否有一种方法可以覆盖或抑制警告"变量'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
,因为以下问题:
final
变量没有被JVM分配默认值,您需要用一些值初始化它。
static final
类变量应该在声明时或在static
块中初始化。private static final int HEIGHT;
static {
HEIGHT = 10;
}
- 不能给
final
变量赋新值。所以这个HEIGHT=valueToBeUsed;
会导致编译错误。
根据上面的提示,你得到的一定不是一个简单的警告,而是一个编译时错误。