PHASE2 LOG

主にIT関連・ゲームのログ

Javaのお勉強~Genericsとは~

   

前回のコレクションクラスの記事でも記述した

「Generics」についてお勉強してみました。

 

Genericsとは

 

Genericsは型をパラメータとして扱い、オブジェクトを生成するまでは型を抽象的に表現し、

オブジェクト生成時に具体的な型を指定します。

 

…という説明を書いてみたもののイメージ掴みづらくて色々調べてみました。

私の結論としてはこんなイメージです。

Generics1

 

とあるクラス(イメージではGameクラス)があって、クラスを定義した時点では

まだ型が何であるかは決められていません。

そのクラスをnew演算子でインスタンス化する際に、<>の中に型を指定します。

すると、GameクラスはString型のオブジェクトにもなりますし、

別のオブジェクトでint型でインスタンス化することもできます。

 

つまり、クラスを型に縛らせずに汎用化できるというわけです。

 

実際の例を見てみましょう。

class Game <KATA> {
	private KATA k;
	
	public void Method (KATA h) {
		System.out.println(h);
	}
	
}

public class Generics1 {
	public static void main(String[] args){
		Game<String> ps3 = new Game<String> ();
		ps3.Method("PS3のメソッド");
		
		Game<Integer> vita = new Game<Integer> ();
		vita.Method(123);
	}
}

 

Gameクラスでは明確に型が決まっていませんが、KATAが型変数となります。

 

ps3オブジェクトとvitaオブジェクトの生成時に,

それぞれString型とInteger型の別々の型で生成されています。

 

Genericsの仕組みのおかげで、いちいち型ごとにクラスを用意するのは不必要となり

型の誤りを防ぐことができるようになります。

 

また、Genericsは前回の記事でも述べたように、コレクションクラスにも導入されていますので

チェックしてみてくださいね!

 

 

人気ブログランキング

 -