「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 最終的にブロックは、Javaのメソッドの返品値にどのように影響しますか?

最終的にブロックは、Javaのメソッドの返品値にどのように影響しますか?

2025-02-06に投稿しました
ブラウズ:762

How Does a Finally Block Affect the Return Value of a Method in Java?

最終的なブロックが戻り値

の影響をjavaでは、メソッドの戻り値に対する最終的なブロックの動作は直感に反する可能性があります。コードスニペットを分析して、この現象の根本的な理由を掘り下げましょう。 プライベート文字列s; public string foo(){ 試す { s = "dev"; s; } ついに { S = "オーバーライド変数s"; system.out.println( "最終的なブロックのエントリ"); } } public static void main(string [] xyz){ test obj = new test(); System.out.println(obj.foo()); } }

実行すると、コードは「最終的にブロックのエントリ」を印刷しますが、「dev」を返します。これは、返品値がTRYブロックでの返品ステートメントの実行によって決定されるためです。最終的なブロックで「S」に加えられた変更は、TRYブロックが完了した後に発生し、したがって戻り値に反映されません。それ自体、オブジェクトの「」参照の変更ではありません。 「s」が可変オブジェクトへの参照であり、その内容が最終的なブロックで変更された場合、それらの変更は戻り値に表示されます。セクション14.20.2の動作。試用式の声明の場合、Tryブロックと最終的なブロックの両方が戻りステートメントを持っている場合、最終的なブロックの返品値が勝ちます。これは、返品ステートメントの実行がブロックの突然の終了と見なされるためです。最終的なブロックの変数に加えられた変更は、値であろうとオブジェクトの変更を介して、最終的なブロックに戻りステートメントも含まれていない限り、返品値に影響しません。

も含まれていません。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3