为了账号安全,请及时绑定邮箱和手机立即绑定

Java中为何不能使用泛型数组?

Java中为何不能使用泛型数组?

宝慕林4294392 2019-03-04 06:26:54
刚刚接触java,在学习泛型时遇到了一个问题。我编写了一段代码,存在一个疑问,第3行是否属于使用泛型数组。我了解到翻译泛型时存在类型擦除,<Integer, String>会被抹成Object,而且我也明确看到了资料中写出不支持泛型数组。希望有好心人可以给我解释一下我这段代码是否属于泛型数组,或者说是,能够通俗的解释一下不能使用使用泛型的理由。万分感谢!public class GenericParadigmTest {     public static void main(String[] args) {         Demo<String,Integer>[] demos=new Demo[3];         demos[0]=new Demo<>();         demos[0].setData1("smith");         demos[0].setData2(25);         demos[1]=new Demo<>();         demos[1].setData1("howard");         demos[1].setData2(46);     } }class Demo<T1,T2>{     private T1 data1;    private T2 data2;    public T1 getData1(){        return data1;     }    public void setData1(T1 data1){        this.data1=data1;     }    public T2 getData2(){        return data2;     }    public void setData2(T2 data2){        this.data2=data2;     } }
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

Demo<String,Integer>[] demos=new Demo<String,Integer>[3];// not support in java

这样才是泛型数组
为什么不支持你自己也提到了,因为java的泛型是伪泛型,是通过擦除实现的,Demo<String>[]和Demo<Integer>[]都会被擦除成Demo<Object>[],也就有安全问题了


查看完整回答
反对 回复 2019-03-11
?
莫回无

TA贡献1865条经验 获得超7个赞

我也是个jahttps://img1.sycdn.imooc.com//5c86202f0001679007760093.jpgva小白,算法第四版里。看到的

查看完整回答
反对 回复 2019-03-11
  • 2 回答
  • 0 关注
  • 558 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信