zoukankan      html  css  js  c++  java
  • Java泛型(9):动态类型安全

    因为可以向Java SE5之前的代码传递泛型容器,所以旧式代码仍有可能破坏你的容器。Java SE5中有一组便利工具,可以解决这种情况下类型检查的问题。

    它们是静态方法checkedCollection(); checkedList(); checkedMap(); checkedSet(); checkedSortedMap(); checkedSortedSet();

    这些方法的第一个参数是你希望动态检查的容器,第二个参数是你希望强制要求的类型。当受检查的容器插入不正确的对象时会抛出ClassCastException。

     1 public class Test {
     2     @SuppressWarnings("unchecked")
     3     static void oldStyleMethod(List probablyAppels) {
     4         probablyAppels.add(new Banana());
     5     }
     6     public static void main(String[] args) {
     7         List<Apple> apples1 = new ArrayList<>();
     8         oldStyleMethod(apples1);
     9         List<Apple> apples2 = Collections.checkedList(
    10                 new ArrayList<>(), Apple.class);
    11         try {
    12             oldStyleMethod(apples2);
    13         } catch(Exception e) {
    14             System.out.println(e);
    15             // java.lang.ClassCastException: Attempt to insert class chapter15.class13.Banana element into collection with element type class chapter15.class13.Apple
    16         }
    17         List<Fruit> pets = Collections.checkedList(
    18                 new ArrayList<>(), Fruit.class);
    19         pets.add(new Apple());
    20         pets.add(new Banana());
    21     }
    22 }
    23 
    24 class Fruit {}
    25 class Apple extends Fruit {}
    26 class Banana extends Fruit {}
  • 相关阅读:
    js中Unicode转义序列
    css相对定位和绝对定位
    C#默认以管理员身份运行程序
    asp.net判断是否代理
    JS上传图片选择后立即预览
    asp.net判断是刷新还是提交
    查询QQ好友的IP地址(二)
    查询QQ好友的IP地址(一)
    Hadoop综合大作业+补交平时作业
    熟悉常用的Hbase操作
  • 原文地址:https://www.cnblogs.com/storml/p/8126730.html
Copyright © 2011-2022 走看看