zoukankan      html  css  js  c++  java
  • 高效泛型

    本章包含一些如何有效使用泛型的实践代码。着重介绍了检查集合,安全问题,专用的类以及二进制的适配性。

    小心使用遗留代码

    我们知道,泛型是在编译时检查的,而不是在运行时。通常,这正式我们想要的,因为编译时检查可以更早的报错误,而没有运行时开销。然而,有时候这并不合适,
    或者是因为我们不确定编译时检查是否足够(也就是说,我们将传递一个参数化类型的实例给一个我们不信任的遗留的客户端),或者是因为我们需要运行时的类型信息。(也就是说,我们需要一个具体的类型作为数组的元素)。检查集合通常能起到作用,而当它们不能起作用的时候,我们可以创建一个特殊的类。
    想象一个遗留类库,该类库包含想给定的列表添加元素,并返回包含这些元素的新列表。

    class LegacyLibrary {
      public static void addItems(List list) {
        list.add(new Integer(1)); list.add("two");
      }
      public static List getItems() {
        List list = new ArrayList();
        list.add(new Integer(3)); list.add("four");
        return list;
      }
    }
    

    现在有一个客户端使用这些遗留代码,而且已经被错误的告知里面的元素都是整数。

    class NaiveClient {
      public static void processItems() {
        List<Integer> list = new ArrayList<Integer>();
        Legacy Library.addItems(list);
        List<Integer> list2 = LegacyLibrary.getItems(); // unchecked
        // sometime later ...
        int s = 0;
        for (int i : list) s += i; // class cast exception
        for (int i : list2) s += i; // class cast exception
      }
    }
    

    待完成

  • 相关阅读:
    79月知识小结
    将网页上word、pdf、txt文件下载下来,解析成文本内容
    vs 配色方案
    sql时间函数
    关于全角转半角的方法
    多线程与UI操作
    委托调用、子线程程调用、与线程池调用
    算法插入排序
    字符串在某字段里时,如何写搜索的SQL语句
    理解constructor属性
  • 原文地址:https://www.cnblogs.com/xiaojintao/p/5998707.html
Copyright © 2011-2022 走看看