变量可能尚未初始化

时间:2012-03-07 22:59:51

标签: java

我在这里,以为我认识Java,我收到错误Variable 'storage' might not have been initialized。这是我的代码:

public class RobbleSet {
    private final Set<Robble> storage; // Error occurs here

    public RobbleSet() {
        storage = new HashSet<Robble>();
    }

    public addRobble(Robble r) {
        storage.add(r); // Error occurs here too
    }
}

storage在构造函数中初始化。是什么给了什么?

3 个答案:

答案 0 :(得分:5)

一个问题是您没有声明addRobble的返回类型;你需要改变这个:

    public addRobble(Robble r) {

到此:

    public void addRobble(Robble r) {

我怀疑这是 问题 - 您的编译器认为addRobble是一个错误的构造函数,所以抱怨它无法初始化storage - 但即使事实证明它不是 问题,它肯定是 问题。

答案 1 :(得分:2)

addRobble没有返回类型,因此静态分析器将其作为构造函数提取,即使它不被称为RobbleSet。正确的代码如下:

public class RobbleSet {
    private final Set<Robble> storage; // Error occurs here

    public RobbleSet() {
        storage = new HashSet<Robble>();
    }

    public void addRobble(Robble r) {
        storage.add(r); // Error occurs here too
    }
}

答案 2 :(得分:-1)

存储被声明为最终的,因此是错误。 对于最终变量,必须在构造函数中分配值。 addRobble中的错误也是由于相同的原因,您不能使用构造函数以外的任何方法来修改final变量的值。