とても簡単です。これは、J2SE 5で導入された新機能です。クラス名の後に山括弧を指定すると、任意のタイプのデータを保持できる一時的なデータタイプが作成されます。
例:
class A<T>{
T obj;
void add(T obj){
this.obj=obj;
}
T get(){
return obj;
}
}
public class generics {
static<E> void print(E[] elements){
for(E element:elements){
System.out.println(element);
}
}
public static void main(String[] args) {
A<String> obj=new A<String>();
A<Integer> obj1=new A<Integer>();
obj.add("hello");
obj1.add(6);
System.out.println(obj.get());
System.out.println(obj1.get());
Integer[] arr={1,3,5,7};
print(arr);
}
}
の代わりに<T>、実際には何でも書くことができ、同じように動作します。の<ABC>代わりに書いてみてください<T>。
これは便宜上のものです。
<T> 任意のタイプと呼ばれます
<E> 要素タイプとして
<N> 数値型として
<V> 価値として
<K> キーとして
しかし、あなたはそれをあなたが好きな名前にすることができます、それは本当に重要ではありません。
また、Integer、String、Booleanなどどの助けコンパイル時の型のチェックでのJavaのラッパークラスです。たとえば、上記のコードでobjは、はタイプStringであるため、他のタイプを追加することはできません(試行obj.add(1)すると、エラーが発生します)。同様に、obj1のIntegerタイプは、他のタイプを追加することはできません(試行するとobj1.add("hello")、エラーが発生します)。
T createObjectプールやPoolFactory内のはず?どこにあるthis.freeObjects = ...はずですか?それは別の例ですか?そこにそれを置くことは違法です。メソッド内にある必要があります。