Java泛型类的问题

nacl 2011-07-04 11:47:28
我设计了这样一个类:
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。请教各位大侠这应该怎么解决?
...全文
192 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nacl 2011-09-07
  • 打赏
  • 举报
回复
哎呀,各位不好意思呀。菜鸟我好久没来了。今天结贴啦。多谢各位大侠啦!!学习很多啊。这个java的泛型还是有些那个什么的嘛~~
五哥 2011-07-05
  • 打赏
  • 举报
回复


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){
//写入测试代码了
}

}

皮特张 2011-07-05
  • 打赏
  • 举报
回复
学习一下。呵呵
syoumei 2011-07-05
  • 打赏
  • 举报
回复
这个例子非常好
[Quote=引用 2 楼 wenbodong 的回复:]

Java code

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){
C……
[/Quote]
dong_very_good 2011-07-05
  • 打赏
  • 举报
回复
学习了。。。
iis81365341 2011-07-05
  • 打赏
  • 举报
回复
把cache = (T[]) new Object[10];改为cache = (T[])new Number[10];
KingViker 2011-07-05
  • 打赏
  • 举报
回复
学习了
uastation 2011-07-05
  • 打赏
  • 举报
回复
泛型如楼上所说的:
//创建一个cls所指类型的实例.
//第一步是得到要创建的实例类型的构造函数,这里涉及到一个问题,一个类可能有很多构造函数
//你想调用哪个呢.对于实际情况,既然你设计的范型,当然就不是针对某一个类而设计的,至少是
//一批类.那么这时候,你的构造函数的参数表,当然就是某一个特定类的参数表,而是一批类所相同
//形式的表.这里,我使用了Number的子类所共同形式参数表的构造函数,即参数为String
//其实,如果你想调用无参构造函数的话,大可不必这么麻烦,直接
//cls.newInstance()即可.但是Number的子类是没有无参形式的构造函数滴
TKD03072010 2011-07-05
  • 打赏
  • 举报
回复
泛型 ...
楼上已经说明了
燃烧土豆 2011-07-05
  • 打赏
  • 举报
回复
Test<Integer> test=new Test<Integer>(0);
wenbodong 2011-07-05
  • 打赏
  • 举报
回复

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);
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧