• JAVA泛化及为什么需要泛化


    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

        比如,有一种类型为List,此时该List可以是任意类型的列表,如Integer,String等等。

        如果把List类型改为List<Integer>,则此时只表示整型的列表。

        这就是所谓的将操作的数据类型指定为一个参数,这等同于C++里面的模板(template)。

        那么这么做有什么好处呢?

        比如原来我们有如下的程序:

    List myIntList = new LinkedList();// 1

    myIntList.add(new Integer(0));// 2

    Integer x = (Integer) myIntList.iterator().next();// 3

        在第三行中进行了强制类型转换。这个类型转换不仅仅带来了混乱,它还可能产生一个运行时错误(run time error),因为程序员可能会犯错。

    程序员如何才能明确表示他们的意图,把一个list中的内容限制为一个特定的数据类型呢?这是generics背后的核心思想。这是上面程序片断的一个泛型版本:

    List<Integer> myIntList = new LinkedList<Integer>(); // 1

    myIntList.add(new Integer(0)); // 2

    Integer x = myIntList.iterator().next(); // 3

    注意变量myIntList的类型声明。它指定这不是一个任意的List,而是一个Integer的List,写作:List<Integer>。我们说List是一个带一个类型参数的泛型接口(a generic interface that takes a type parameter),本例中,类型参数是Integer。我们在创建这个List对象的时候也指定了一个类型参数。

    另一个需要注意的是第3行没了类型转换。

    一句话:就是 给容器指定类型 ,那么在使用这个容器的时候,就不用特意的转型了

  • 相关阅读:
    第1课 Git、谁与争锋
    程序员最真实的10个瞬间
    程序员最真实的10个瞬间
    一文读懂前端缓存
    一文读懂前端缓存
    一文读懂前端缓存
    EF使用CodeFirst创建数据库和表
    EF使用CodeFirst创建数据库和表
    EF使用CodeFirst创建数据库和表
    ASP.NET MVC的过滤器笔记
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/7676033.html
Copyright © 2020-2023  润新知