Core Java APIの多くのクラスはfinal(Wrapperクラス、String、Math)です。 なぜそうですか?なぜラッパークラス、文字列、...最終ですか?
答えて
他のプログラマーがサブクラスを作成したり、特定のメソッドをオーバーライドするのを防ぐことができます。このような場合は、の最後のというキーワードを使用します。
Stringクラスは、不変の不変であることを意味します。文字列オブジェクトは、それらのメソッドのいずれによっても変更できません。 javaはこれを強制しないので、クラスデザイナーはやりました。誰もStringのサブクラスを作成することはできません。
これはあなたの質問にお答えします。
'final' *が何をしているのかを説明しますが、なぜそのクラスがfinalであるのかについての説明ではありません。 –
「時々」 - 実際はデフォルトにする必要があります! –
finalクラスと動的クラスローディングとセキュリティの間に概念がありますか.Plz explain。 –
セキュリティ上の理由から、最終的なものです。他にも理由があるかもしれませんが、セキュリティが最も重要です。
java.lang.String
を継承し、独自の変更可能な実装をセキュリティに敏感なAPIに提供するとします。 APIは選択肢がありませんが、あなたの文字列(置換原則を覚えておいてください)を取ることはできますが、それがチェックされた後であっても(並行スレッド上またはAPIが返された後に)文字列を変更することができます有効です。
同じことは、プリミティブのラッパーになります。これらのクラスを使用してAPIでエンコードされた動作についての重要な前提に違反するため、これらを変更することは望ましくありません。
String
を最終的に作成することで、他の人たちが独自の潜在的に敵対的なクラスの実装をString
のように提供しないようにすることで、この問題を解決します。
- 1. 最終的な静的な文字列は、静的な最終的な文字列より効率的ですか?
- 2. なぜC文字列に終端文字 '\ 0'を含めるべきか?
- 3. C++最終定数文字列
- 4. 非ヌル終了C文字列を終了C文字列に変換する最もきれいな方法
- 5. なぜjavaslang CharSeqが最終ですか?
- 6. Stringはなぜ最終的ですか?
- 7. 私のC++バイソンプログラムの最終縮退時に、文字列トークンが改行されるのはなぜですか?
- 8. 最終値から文字列の範囲を作成する
- 9. ラッパークラスを使用して文字列をarrylistに変換する
- 10. 文字列連結:最終文字列値が最新の値と等しくない
- 11. XDocumentは、キャリッジリターンを、最終的なXML文字列
- 12. リクエストパラメータの静的な最終文字列の利点?
- 13. 最終的な文字列変数の使用を避ける
- 14. 文字列の最初の文字が印刷されないのはなぜですか?
- 15. 最初の日付文字列がfalseを返すのはなぜですか?
- 16. なぜ文字列長-1
- 17. 文字列の終わりから最初の出現までの文字列のデータを取得する
- 18. AlertDialogは、[OK]をクリックせずに閉じて、私は</p> <p>プライベートボイドdispAlertBox以下のように(OK、最終的な文字列のタイトル、最終文字列メッセージ、最後の文字列を、最終的な文字列がキャンセル、)AlertDialogBoxを表示するには、以下のコードを書かれているアンドロイド4.0で
- 19. なぜポートは整数ではなく文字列ですか?
- 20. なぜ文字列を分割できないのですか?
- 21. なぜ文字列ではないですか?
- 22. 文字列が同じでないのはなぜですか?
- 23. 文字列が値でないのはなぜですか?
- 24. C#の文字列は空の文字列で終わりますか?
- 25. R:文字列の1つで終わる文字列
- 26. mcrypt_encrypt()が文字列の最後にバイナリ文字を置くのはなぜですか?ここ
- 27. Newtonsoft.Json.JsonReaderException:未終了文字列です。
- 28. Perl NULLで終了する文字列
- 29. Org.json.JSONException:文字列で終端されていない文字列1834
- 30. StringTokenizer - 最初の文字列ですか?
これらのパッケージを発明した人は誰でも尋ねてください。私の推測は、JDKがStringクラスとWrapperクラスで動作することが保証されているためです(動作を変更するサブクラスの問題を回避する)。 –
拡張されることは意図されていないためですか? – assylias
重複:http://stackoverflow.com/questions/2068804/why-is-string-final-in-java – Mat