コンストラクタで 'super()'の呼び出し後に初期化ブロックが実行されることがわかりました。コンストラクタ内の初期化ブロック
public class SimpleListLocalsAnalysis extends BackwardFlowAnalysis
FlowSet emptySet;
public SimpleLiveLocalsAnalysis(UnitGraph graph) {
super(graph);
{
Chain locals = g.getBody().getLocals();
FlowUniverse localUniverse = new FlowUniverse(locals.toArray());
emptySet = new ArrayPackedSet(localUniverse);
}
doAnalysis();
}
...
}
上記のコードは、単に「スーパー(グラフ)」の呼び出しの後に初期化ブロック内で起こっていくつかの初期化を示しています。しかし、今朝いくつかのコードを見たとき、私は次を発見しました。 superへの呼び出しの後に必ず実行されるので、コンストラクタ内の初期化ブロックにコードを配置する目的は何ですか。私はここに何かを逃していますか
「単純ブロック」の目的は何ですか?なぜそれを使用するのですか? – Joeblackdev
あなたはスコープの利点を持つことができます..あなたはこのブロックでいくつかのローカルなことをすることができます。 –
あなたが定義したものがブロックの外部にアクセスできないようにするにはどうすればいいですか?これはなぜあなたがそれらを使うのですか? – Joeblackdev