私はいくつかの継承されたコードを再検討していますが、設計上の決定に困惑しており、これをGoogleに適切な言葉で表すことはできません。私の前任者は次のようなブロックを使用します:Javaでは、なぜキーワードがないコードブロックを使用すると中括弧
public class ChildClass extends ParentClass {
{
inheritedVar = "someVal";
}
public ChildClass(){ /* constructor exists */ }
// rest of code
}
キーワードのないコードブロックを宣言するポイントは何ですか?それは静的なブロックのように振る舞いません、私は信じていません。それはコンストラクタで設定する代わりに使用できますか?工場が使用されている場合(これはそうではありません)、これは何らかの効果がありますか?私はthis happening in Cに関連するスレッドを見つけましたが、推論(スコープ&変数宣言)はJavaに関連していないようです。
これの「理由」に関する考えやアイデアは感謝します。それを再因子化するのは簡単ですが、私はこの時点で興味があります。
+1このブロックの正しい使い方を指摘してください。 – birryree
+1:名前付きイニシャライザメソッドについて私は同意します。しかし、コンストラクタが1つだけであることを考えると、コードベース内のこのブロック全体が無意味に見えます。 – Riggy
@Riggy、それは確かに冗長です。 – Mike