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
      }
    }
    

    待完成

  • 相关阅读:
    在AS/400上根据日期生成星期几
    如何删除含无效字符的文件
    在CL中使用SST或者SUBSTRING
    取网络属性
    如何在程序中获取系统ASP使用率等系统状态信息
    在CL中使用ELSE
    在CL中读一个文件
    如何在FTP命令行执行AS/400命令
    广告悬停功能
    关于Grouping, Rollup,cube,
  • 原文地址:https://www.cnblogs.com/xiaojintao/p/5998707.html
Copyright © 2011-2022 走看看