ここで私は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
がコンストラクタで初期化されています。何がありますか?
これは、*唯一の*コンストラクタであることを確認したい場合があります。コンストラクタが複数ある場合は、それらのすべてがコンストラクタを初期化する必要があります。さらに良いことに、 'private final Set storage = new HashSet ();'と書いておけば、コンストラクタに入れる必要はありません。 :-) –
ruakh
私は間違いなく1つのコンストラクタしか持っていません。コンストラクタではなく、フィールドでの初期化の技術的な違い(バイトコード/実行レベル)はありますか? –
私はちょうど答えを掲示しました - あなたは同じことを言ってあなたの質問を編集したことがわかります。ある場所での初期化と他の場所での初期化との間の技術的な違いについて:そうではありません。私が理解しているところでは、違いはソースコードからバイトコードに伝えられます(あるバージョンはコンストラクタの代わりに 'init'メソッドに入っているので)、実際の*効果はありません。 – ruakh