我设计了这样一个类:
class littleCollector<T extends Number> { private T[] cache;
private int size = 0, contains = 0; /**
* 初始容量为10
*/
@SuppressWarnings("unchecked")
public littleCollector() {
cache = (T[]) new Object[10];
}}
目的是设计一个容器类,封装数字对象。默认有10个对象。怎样初始化才正确呢?这段代码运行后就提示Exception in thread "main" java.lang.ClassCastException。请教各位大侠这应该怎么解决?
class littleCollector<T extends Number> { private T[] cache;
private int size = 0, contains = 0; /**
* 初始容量为10
*/
@SuppressWarnings("unchecked")
public littleCollector() {
cache = (T[]) new Object[10];
}}
目的是设计一个容器类,封装数字对象。默认有10个对象。怎样初始化才正确呢?这段代码运行后就提示Exception in thread "main" java.lang.ClassCastException。请教各位大侠这应该怎么解决?
解决方案 »
- RMIC编译遇到的问题
- 准备换windows 2008 R2,只有64位版本的。有谁正在用64位系统的?
- 关于HttpSessionBindingListener的问题
- java编译出错
- 谁有installanywhere的注册码?这100分就是你的了
- 请教高手!如何在java里面调用批处理的.bat!在线等!
- 为什么对象可以用接口来返回?
- Redhat 9下 jdk1.4.2安装成功,为什么javac不能用??
- Java的类库应当怎么样去使用(谢谢)
- 在TOMCAT 3.x版本中,BIN目录下有tomcat.bat、tomcatEnv.bat,可是在TOMCAT 4.x中,这几个文件跑那去了?????
- 急!!怎么使用代理下载访问啊?
- 求一个{name}大括号内的正则表达式
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);
}
}
//创建一个cls所指类型的实例.
//第一步是得到要创建的实例类型的构造函数,这里涉及到一个问题,一个类可能有很多构造函数
//你想调用哪个呢.对于实际情况,既然你设计的范型,当然就不是针对某一个类而设计的,至少是
//一批类.那么这时候,你的构造函数的参数表,当然就是某一个特定类的参数表,而是一批类所相同
//形式的表.这里,我使用了Number的子类所共同形式参数表的构造函数,即参数为String
//其实,如果你想调用无参构造函数的话,大可不必这么麻烦,直接
//cls.newInstance()即可.但是Number的子类是没有无参形式的构造函数滴