• 高效泛型


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

    小心使用遗留代码

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

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

    待完成

  • 相关阅读:
    [Java解惑]数值表达式
    Java使用LdAP获取AD域用户
    LDAP Error Codes
    Excel向上取整
    java中的三种取整函数
    Dwz手册的补充说明和常见问题
    【转】BSON数据格式
    go语言合并两个数组
    vscode远程修改文件('file': A system error occured )
    [转]Linux 桌面玩家指南:20. 把 Linux 系统装入 U 盘打包带走
  • 原文地址:https://www.cnblogs.com/xiaojintao/p/5998707.html
Copyright © 2020-2023  润新知