ジェネリックの概要
ジェネリックとは何かを説明するために例を挙げてみましょう。
次の 2 つのクラスがあり、2 つのクラスのオブジェクトを構築し、それぞれのメンバー x を出力する必要があります。
public class StringFoo {
private String x;
public String getX() {
return x; }
public void setX(String x) {
public class DoubleFoo {
private Double x;
パブリックダブルgetX() {
return x;
}
public void setX(Double x) {
this. ong、Date など。型操作に対応するクラスを書くのは本当に退屈です。
したがって、上記の 2 つのクラスを 1 つのクラスにリファクタリングし、次の点を考慮してください:
上記のクラスでは、メンバーとメソッドのロジックは同じですが、型が異なります。 Object はすべてのクラスの親クラスであるため、ユニバーサルにするために、メンバーの型として Object を使用することを検討できます。
public class ObjectFoo {
private Object x;
public Object getX() {
return x; }
public void setX(Object x) {
this.x = x;
以下のように:
public class ObjectFooDemo {
public static void main(String args[]) {
ObjectFoo strFoo = new ObjectFoo();
strFoo.setX("Hello Generics!");
ObjectFoo douFoo = new ObjectFoo() ;
douFoo .setX(new Double("33")) ;
ObjectFoo objFoo = new ObjectFoo();
String str = (String)strFoo.getX(); d = (Double)douFoo.getX();
オブジェクト obj = objFoo.getX()
System.out.println("strFoo.getX=" + str); =" + d);
System.out.println("strFoo.getX=" + obj);
}
}
上記は、型宣言に最上位の基本クラス Object を使用して、ジェネリックスを使用せずに記述したコードです。値を渡し、取り出すときに強制的に型変換を実行します。
JDK は、このような問題をエレガントに解決するために、1.5 以降ジェネリックの概念を導入しました。汎用テクノロジーを使用して作成されたコードは次のとおりです。
public class GenericsFoo {
public T getX() {
return x }
public void setX(T x) {
this; . x = x; }
}
呼び出しコードは次のとおりです:
public static void main(String args[]){
GenericsFoo();
setX("Hello Generics!");
GenericsFoo new GenericsFoo