2016-06-20 24 views
0

私はthis issueと見て、私は混乱しています。彼は静的なブロックを使用しています。なぜ彼は単一の行を書くだろうか?静的ブロックと静的フィールドの違いは何ですか?

これら2つの違いは何ですか?

private static Pattern email_pattern = Pattern.compile(EMAIL_PATTERN); 

そして

private static Pattern email_pattern; 

static { 
    email_pattern = Pattern.compile(EMAIL_PATTERN); 
} 
+0

最初の1つは不必要に2つの割り当てを持っています... – fabian

答えて

2

両方のコードフラグメントは同じことをしますが、ほとんどの人がコンパクトバージョンを読みやすくします。

例外を処理するなど、1行の割り当てでは実行できないことがあります。そのような場合は、イニシャライザブロックを使用する必要があります。

第3の方法は、イニシャライザコードを静的メソッドに移動することです。

private static final Pattern pattern = doSomethingReallyComplexHere(); 
6

あなたの例の動作に違いはありません。静的ブロックを使用すると、単にvarを割り当てるよりも多くのロジックを実行できます。あなたの例でブロックを使用する必要はありません。

関連する問題