zoukankan      html  css  js  c++  java
  • 第二十五条:泛型集合优先于数组

    数组与泛型集合相比,有两个重要的不同点。

    首先,数组是协变的,相反,泛型则是不可变的。所谓的协变是指:如果Sub类是Super类的子类型,那么数组类型Sub[] 就是Super[]的子类型,也就是

    说可以将Sub[]数组实例赋给Super[]数组类型变量。相反泛型是不可变的,那么List<Sub>与List<Super>则不存在子类型与超类型的关系。也就是说

    不能将ArrayList<Sub>实例赋给ArrayList<Super>类型的变量。

    其次,数组是具体化的。因此数组会在运行时才知道并检查它们的元素类型约束。如果企图将String类型的对象保存在Long数组中,编译时并不会报错。

    但是在运行会抛出ArrayStoreException异常。相比之下,泛型则是通过擦除来实现的。因此泛型只是在编译的时候强化它们的类型信息,并在运行时

    丢弃它们的元素类型信息。擦除就是使泛型可以与没有使用泛型的代码随意进行互用。

    由于上面的根本区别,因此数组和泛型集合不能很好的混合使用。如:new List<E>[] ,new List<String>[],new E[]都是不合法的。

  • 相关阅读:
    15 手写数字识别-小数据集
    14 深度学习-卷积
    5.线性回归算法
    9、主成分分析
    8、特征选择
    4.K均值算法--应用
    6.逻辑回归
    12.朴素贝叶斯-垃圾邮件分类
    13、垃圾邮件2
    大数据应用期末总评
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4478348.html
Copyright © 2011-2022 走看看