0
0

(java gold) コレクションとジェネリクス

Posted at

ジェネリクス

  • ワイルドカード型>...総称型パラメータの変性を変更する仕組み
    • ?...非境界ワイルドカード型(型が...不明なのでgetした要素の型はObject型)
    • ? extends T ... 上限境界ワイルドカード型(少なくてもTのサブクラス: 共変)
    • ? super T ... 下限境界ワイルドカード型(少なくてもTのスーパークラス: 反変)
      • 読み込みには上限境界ワイルドカード型、書き込み時には下限境界ワイルドカード型を使う
// Point: Java のコレクションは非変なので List<Object> と
// List<Integer> には親子関係がないものとみなす。
// (配列の場合は共変なので代入可)つまり、
List<Integer> li = Arrays.asList(1, 2);
List<Object> lo = li; // NG
//となるが、総称型パラメータにワイルドカード型を使うことで
//制約を変更可能
Lust<?> lw = li; // OK

命名慣習

記号 概要
E 要素(Element)
K キー(Key)
T 型(Type)
V 値(Value)
N 数値(Number)
R 戻り値型(Return)
S, U, V 2番目、3番目、4番目…
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0