我在这里,以为我认识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
在构造函数中初始化。是什么给了什么?
答案 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变量的值。