qowoeo7538 2015-01-03 16:21 采纳率: 73.7%
浏览 1623
已采纳

泛型除了标示类还有其他的作用吗?

 public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("hello");
        list.add("world");
        list.add("java");
        for(String i : list){
            System.out.println(i);
        }

    }

为什么不声明泛型String之后用foreach遍历就会报错?泛型在这里起到的作用是什么.?

  • 写回答

2条回答 默认 最新

  • Coursera 2015-01-03 23:25
    关注

    for-loop的底层使用的是iterator,试想你的程序编译器转化后和以下代码一致,就没问题
    Iterator i = list.iterator();
    while(iter.hasNext()) {
    String i = iter.next(); //iterator.next()是string类型
    }
    如果不用范型,你的程序就是
    Iterator iterator = list.iterator();
    while(iterator.hasNext()) {
    String i = iterator.next(); // 看到问题了么,这里iteraotr.next()是object,类型转换失败啊
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?