Jacoのチームは、埋め込みウェブサーバーをシャットダウンする際にデッドロック問題に遭遇しました。
リフレクションを使用してプライベートフィールドにアクセスし、変更することで解決策が見つかりました。
プライベートフィールド名が「リスナー」で、nullに設定されました。
リスナースレッドは、実行を停止するために中断されました。
リフレクションは、サーバーの内部状態を変更するためにプライベートフィールドの保護をバイパスするために使用されました。
このコードのアプローチは、非慣例的で推奨されません。
リフレクションを使用してプライベートフィールドにアクセスすることは、一般的に推奨されません。
プライベートフィールドを変更することは、予想しない結果を招く可能性があり、カプセル化を壊すことができます。
内部実装の詳細に干渉することは、コードを維持しデバッグすることを困難にする可能性があります。
問題解決にリフレクションに頼るのは、必要かどうかを確認し、避けることが大切です。
thedailywtf.com
CodeSOD: Reflections on Privacy
Create attached notes ...
