ジェネリックは、コードをより一般化して柔軟にするために使用されます。
しかし、それは何をしcast iron guarantee
、generics
何を保証するのでしょうか?
編集:この質問はインタビューで私から尋ねられたので、後でウェブでも検索しましたが、鋳鉄コミュニティは1つしか見つかりませんでしたが、そのような保証に関連するものは何もありません.
他の質問は、これが何を意味するかを説明しています。いわゆる「鋳鉄」保証にはいくつかの例外があることを指摘したいだけです。
コードベース1に安全でない変換などを行うステートメントが含まれている場合 (メッセージが表示されているか、メッセージを抑制しているかに関係なく)、ヒープ汚染が発生する可能性があります。
コードベースでリフレクションを使用して汎用オブジェクトの操作を実行すると、ヒープ汚染が発生する可能性があります。
いずれの場合も、このヒープ汚染によって ClassCastExceptions が発生する可能性があります。
「鋳鉄の保証」というフレーズは、どの Oracle ドキュメントにも表示されないことに注意してください。人気のある教科書の発明のようです...
1 - ヒープ汚染は、sode が使用しているライブラリ コードで発生する可能性があります。
- Generics
に実装できますがvariables
、classes
を型安全にするmethods
ように特別に設計されています。collections
-Generics
導入されていない場合、特定のタイプのオブジェクトはコレクション内に入り、Object タイプとして出てきます。
例えば:
ArrayList arr = new ArrayList();
arr.(new Dog);
Dog d = (Dog) arr.get(0); // Explicit cast is required to get the specific type of object
-の導入によりGenerics
、a specific type goes into the collection it comes out as that same specific type.
ArrayList arr = new ArrayList();
arr.(new Dog);
Dog d = arr.get(0); // No casting required.
- 鋳鉄保証とは、すべてのジェネリック タイプが同じ特定タイプになることを意味します。
-ジェネリックを使用すると、型キャストの問題がコンパイル時に処理されるため、中
に型キャスト例外が発生しないことが保証されます。runtime