パッケージのテスト; 輸入java.util.HashMapを; 輸入java.util.Map; 輸入java.util.Objects。 パブリック クラステスト実装好きな{ プライベート地図<クラス<>、オブジェクト?>お気に入り= 新しい HashMapの<> (); @Override 公共 <T> ボイド putFavorite(クラス<T> 型、Tインスタンス){ favorites.put(Objects.requireNonNull(タイプ)、type.cast(インスタンス))。 } @Override 公共 <T> T getFavorite(クラス<T> 型){ 戻りtype.cast(favorites.get(タイプ))。 } 公共 静的 ボイドメイン(文字列[]引数){ テストテスト = 新しいテスト(); test.putFavorite(文字列。クラス、 "Javaの" ); test.putFavorite(整数。クラス 1111 )。 文字列の好き = test.getFavorite(文字列。クラス); } }
常にセキュリティ、コンパイルと実行時間の種類を検討します。
結論として、一般的なAPIの一般的な使用(例を設定するためのAPI)は、容器の種類ごとに固定されたパラメータの数を制限します。あなたは、この制限を回避するコンテナではなく、最大のキーを配置することによって、パラメータを入力することができます。Classオブジェクトは、異種コンテナのセキュリティキーのこのタイプとして使用することができます。このようにClassオブジェクトは、タイプ・トークンと呼ばれています。また、キータイプをカスタマイズするために使用することができます。例えば、行があるかもしれないキーとしてデータベース(容器)DatabaseRow型とジェネリック型カラム<T>を表します。