Java ジェネリックスのサンプル

Javaのジェネリックスのサンプルです。

ジェネリックス

  • ジェネリックスは、<>(山括弧)の中で指定した型をコンパイル時に保証します。
    例:Map<String,String> colors = new HashMap<>();
    →MapのキーはStringで、ValueもStringという意味
    →値がString以外の時はコンパイルエラーになります。
  • 下の例のHashMapのKとVの部分を型変数と言います。インスタンス化された時に具体的な型になります。
    例:public class HashMap<K,V>
    https://docs.oracle.com/javase/jp/8/docs/api/java/util/HashMap.html
  • 型変数は慣例的に英字1文字で表されます。(KでなくてもKKでもロジックは通ります)
    主な型変数の例
    型変数 意味
    T Type
    K Key
    V Value
    E Element

コード

ジェネリックスのコードのサンプルです。
24行目は、ジェネリックスでStringを指定しています。
28行目は、ジェネリックスでIntegerを指定しています。
33行目は、ジェネリックスでStringを指定していますがコンストラクタの値が数値のためコンパイルエラーになります。

package test1;
 
/**
 * ジェネリックス
 */
// Tが型変数
// インスタンス化されたとき具体的な型になる(StringやIntegerなど)
class Sample<T> {
	T data;
 
	//コンストラクタ
	public Sample(T data) {
		this.data = data;
	}
 
	public T get() {
		return data;
	}
}
public class Test1 {
	public static void main(String[] args) {
 
		// <>の中にStringを指定
		Sample<String> s1 = new Sample<>("abc");
		System.out.println(s1.get());	//abc
 
		// <>の中にIntegerを指定
		Sample<Integer> s2 = new Sample<>(123);
		System.out.println(s2.get());	//123
		
		// <>の中にStringを指定するが
		// コンストラクタの値が数値のためコンパイルエラーになる
//		Sample<String> s3 = new Sample<>(123);
//		System.out.println(s3.get());
	}
}



△上に戻る