0

final初期化されていない変数とデフォルトのコンストラクターを使用してクラスを作成するとprivate、コンパイラーはfinal変数が初期化されていないことを警告します。コンストラクターが到達不能なコードになっていることを除けば、それはすべてうまくいっています。では、これは Java 作成者の見落としにすぎないのでしょうか、それとも論理的な裏の理由があるのでしょうか? それとも、コンストラクターが到達不能なコードであるという私の仮定は間違っていますか?

4

1 に答える 1

1

まあ、コンストラクターのアクセスレベル(プライベート/パブリック/保護/パッケージ)に関係なく「叫び声」が発生します...これらの問題は個別に処理されます。

あるレベルでは、コンパイラーは、すべての最終変数が初期化されるよりも、IF コンストラクターが (どういうわけか、奇跡的に) 呼び出されるようにします。

次に、別のレベルで、コンストラクターの到達可能性について心配します。後でファクトリメソッドを追加できることは明らかであり、さらに「setAccessible(true)」を使用して醜いリフレクションコードで到達できるため、これはもう少し複雑です。

于 2015-08-30T06:28:33.203 に答える