真的很简单。这是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,因此您不能向其添加任何其他类型(try obj.add(1),它将引发错误)。同样,obj1是的Integer类型,您不能向其添加任何其他类型(try obj1.add("hello"),错误在那里)。
T createObject认为是内部池或PoolFactory?this.freeObjects = ...应该在哪里?那是一个单独的例子吗?在那里存放是非法的。它必须在方法内部。