日期:2014-05-20  浏览次数:20786 次

泛型实现连续型线性表问题求助
这个是Mark Allen Weiss写的 数据结构与问题求解 第四版上面的源程序
Java code

private Type[] theItems;//当前数组
private int size;//实际大小

public boolean add(Type x){
   if(theItems.length==size){//数组容量满
       Type[] old = theItems;
       theItems = (Type[]) new Object[size*2+1];//这行怎么都不理解,编译能通过是因为类型擦除,但是运行
                                                 //的时候假如类型参数是String,Object[]如何强转成String[]???
       for(int i=0;i<size;i++)
           theItems[i] = old[i];//循环复制元素
   }
   theItems[size++] = x;//插入元素
   return true;

}


问题1:注释行的问题
问题2:因为new Type[size*2+1]语法不通过,因此还有其他方法扩展泛型数组的容量么?

------解决方案--------------------
探讨

引用:

强制类型转换仍然是存在的,使用泛型时,强制类型转换自动完成,并且保证只要使用正确编译通过,那么转换类型时一定不会抛出 ClassCastException

这里的重点在于"编译通过"。

见一楼最后一句话: Java 泛型的意义在于,且仅在于,编译时。

Java 泛型就是 "通过编译时的类型检查来保证运行时类型安全" 的机制。

编译时因为……