利点は、パラメータの型
Javaのジェネリッククラスの増加の前に、ジェネリックプログラミングは継承が実現です。ArrayListのクラス2つのだけ問題があるArratListを使用して、オブジェクト参照の配列を維持するために、1の値を取得するための力への変換が必要であり、他方は、エラー時にキャストを生成します。
解決するための型パラメータを使用します。
ArrayList<String> files = new ArrayList<String>()
文字列文字列オブジェクトは、加えて、それはアレイよりも自動的に拡張配列リストとすることができる場合には、(文字列を[])ため、良好であるとして表します。
ジェネリッククラス定義1.
2.ジェネリックメソッドの定義を、また、一般的なクラスで定義することができます
ジェネリック医薬品はまた、そのようなインタフェースを実装する必要があり、一般的なパラメータを制限するなど一定の制限を必要とし、
public static <T extends Comparab1e> T min (T[] a) . . .
一般的なコードと仮想マシン
2つの仮想マシン命令には、このメソッドの呼び出しを変換するコンパイラ:
Pair<Employee> buddies =...
Employee buddy = buddies.getFirstO;
•Pair.getFirstのオリジナルメソッドの呼び出し。元のメソッドは、パラメータが消去され、オブジェクトに変換したり、スーパークラスに指定されている一般的な仮想マシンを指し、
従業員の戻り値の型に•オブジェクトの型キャストを。
ジェネリック医薬品のない仮想マシン、のみ通常のクラスとメソッド。
パラメータのすべての種類は、交換のそのタイプによって定義されています。
•ブリッジ法は、多型を維持するために合成されます。
必要に応じてセキュリティの種類を維持するためには、キャストを挿入します。
型パラメータの制約と制限
- 基本的なタイプの例は、パラメータの種類、型消去の理由から、唯一のオブジェクト・タイプを使用することはできません
- オブジェクトは、ジェネリック型に属しているかどうかを照会しようとすると、キャストは警告が表示されます場合は、instanceofを使用した場合、コンパイラエラーを取得します。
- 配列はパラメータ化された型、ペア[]テーブル=新しいペア[10]を作成することはできません; //エラー
- タイプの例としては反対していない状態になります
- 私たちは、一般的な配列を構築することができません
- 型変数と静的フィールドとメソッドの使用を禁止します
- ジェネリッククラスのインスタンスを投げるか、キャプチャしません
相続の一般的なタイプは、ルールなかっ
関係への参照が存在しない、ジェネリック型の間には継承関係を、常にプリミティブ型に種類をパラメータ化することができます
ワイルドカード
Pair<? extends Employee〉
これは、型パラメータ従業員のサブクラスである、などのペアなどの任意の一般的なペアタイプ表す
ペア<?スーパーマネージャー>
などペアペアとして、タイプパラメータスーパークラスのマネージャーである任意の一般的なペアの種類を表しを
ワイルドカードは、一般的なオブジェクトから読み取ることができます定義されたワイルドカードのサブタイプを持つ汎用オブジェクトに書き込まれたスーパータイプで定義することができます。