62,614
社区成员
发帖
与我相关
我的任务
分享
public class littleCollector<T extends Number> {
private T[] cache;
private int size = 0, contains = 0;
/**
* 初始容量为10
*/
@SuppressWarnings("unchecked")
public littleCollector() {
cache = (T[]) new Object[10];
}
public static void main(String []args){
//写入测试代码了
}
}
package General;
import java.util.*;
import java.lang.reflect.*;
/**
* 2011-7-5 0:43:51
* @author Administrator
*/
public class Test<T extends Number> {
public Test(T t){
Class cls=t.getClass();
//创建一个类型为cls所指类型的20个元素的数组
T array[]=(T[])Array.newInstance(cls, 20);
for(int i=0;i<array.length;i++){
try {
//创建一个cls所指类型的实例.
//第一步是得到要创建的实例类型的构造函数,这里涉及到一个问题,一个类可能有很多构造函数
//你想调用哪个呢.对于实际情况,既然你设计的范型,当然就不是针对某一个类而设计的,至少是
//一批类.那么这时候,你的构造函数的参数表,当然就是某一个特定类的参数表,而是一批类所相同
//形式的表.这里,我使用了Number的子类所共同形式参数表的构造函数,即参数为String
//其实,如果你想调用无参构造函数的话,大可不必这么麻烦,直接
//cls.newInstance()即可.但是Number的子类是没有无参形式的构造函数滴
array[i]=(T)cls.getConstructor(String.class).newInstance(new String("123"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
System.out.println(Arrays.toString(array));
}
public static void main(String args[]){
Test<Integer> test=new Test<Integer>(0);
}
}