【发布时间】:2012-03-25 12:14:53
【问题描述】:
我在这里,以为我知道 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 在构造函数中被初始化。什么给了?
【问题讨论】:
-
您可能需要检查以确保这是 only 构造函数。如果你有多个构造函数,那么每个构造函数都需要初始化
storage。更好的是,只需写private final Set<Robble> storage = new HashSet<Robble>();即可,您无需将其放入构造函数中。 :-) -
我肯定只有一个构造函数。在现场而不是在构造函数中初始化是否有任何技术差异(在字节码/执行级别)?
-
我刚刚发布了一个答案——我看到您编辑了您的问题以说出同样的话。关于在一个地方与另一个地方初始化之间的技术差异:不是真的。据我了解,差异将从源代码传输到字节码(因为一个版本在
init方法中而不是在构造函数中),但这不应该有任何 real 效果。
标签: java