A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗全涛 黑马帝   /  2011-12-28 17:23  /  2778 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗全涛 于 2012-1-2 14:15 编辑

将才看关于泛型类的资料时候,书中给了个例子,实现构造函数有点不明白:
public class Lhist<V> {
private V[] array;
public Lhist(int capacity) {
    array = new V[capacity]; // illegal 错误的
}
}
----------------------------------------
public class Lhist<V> {
private V[] array;
public Lhist(int capacity) {
    array = (V[]) new Object[capacity]; //正确的
}
资料只说具体原因很复杂,当学习到 底层细节 一节中的“擦除”主题时,就会明白。可我还是不太明白,大家帮忙看看,能用平白的话给出原因就更好了。

2 个回复

正序浏览
张建银 发表于 2011-12-28 18:47
泛型是TYPE不是Object  不能new所以报非法错误

对象在创建的时候不是会传进去一个类型吗?然后会强制将所有的V变成你传入的类型。那不就可以用new了?
回复 使用道具 举报
泛型是TYPE不是Object  不能new所以报非法错误
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马