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

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

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

慕姐4208626 2019-03-15 13:18:06
刚刚接触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贡献1829条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2019-03-15
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

我也是个java小白,算法第四版里。看到的https://img1.sycdn.imooc.com//5c8b35c50001bb0507040077.jpg

查看完整回答
反对 回复 2019-03-15
  • 2 回答
  • 0 关注
  • 1098 浏览

添加回答

举报

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