ジェネリックス関連用語

・型変数
EとかTのこと。
任意の文字列を指定できる。
慣例的に、要素はE、キーはK、値はV、一般的な型にはTを使う。
ちなみにStringとか既存の型と同じ名前にすることもできるが、ようはただの変数名なので警告が出る。


・ジェネリック型宣言

class Cell {
    // コード
}

などのこと。Cellがジェネリッククラスと宣言している。
ここでの、型変数Eを「型パラメータ」と呼ぶ。
(メソッドのパラメータを意識すると理解しやすいかも。パラメータが複数があって、それぞれに変数名がある)
メソッドと同様に型パラメータも複数受け取ることが可能。その場合は<K, V>のように「,」で区切る。
下記のcellのように、ジェネリック型パラメータEを特定の「型引数(例:String)」で置き換えた
場合にはCell<String>を「パラメータ化された型」という。
※型変数を具体的な型に置き換えることを「パラメータ化する」と覚えておけばよさげ。

class Cell {
    // コード
}
public class Main {
    public static void main(String[] args) {
        Cell cell = new Cell();
    }
}

・ジェネリックメソッド
メソッドに型変数を導入して定義したもの。
メソッド修飾子とメソッドの戻り値型の間に型変数を定義する。
ジェネリックメソッドは、ジェネリッククラス内で宣言する必要はない。
ジェネリッククラス内で宣言されていたら、型変数はジェネリッククラスとジェネリックメソッドで別物になる。

public  T[] toArray(T[] arr) {
    // コード
}

・ジェネリックコンストラクタ
コンストラクタに型変数を導入して定義したもの。文法的にはジェネリックメソッドと同じ。
ジェネリックコンストラクタは、ジェネリッククラス内で宣言する必要はない。
ジェネリッククラス内で宣言されていたら、型変数はジェネリッククラスとジェネリックコンストラクタで別物になる。

public  Sample(T type) {
    // コード
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です