`

java动态类型安全

 
阅读更多
当想集合中插入一个组数据的时候,除了可以明确的指定类型(如List<Integer>)外,还可以使用java.util.Collections提供的方法来检查尅性。包括的静态方法有

checkedCollection(Collection<E> c, Class<E> type) 
checkedList(List<E> list, Class<E> type) 
checkedMap(Map<K,V> m, Class<K> keyType, Class<V> valueType) 
checkedSet(Set<E> s, Class<E> type) 
checkedSortedMap(SortedMap<K,V> m, Class<K> keyType, Class<V> valueType) 
checkedSortedSet(SortedSet<E> s, Class<E> type) 


   这些方法的每一个都会将你希望动态检查的容器当做第一个参数接受,将你希望强制要求的类型作为第二个参数。
    在你试图插入不正确的类型的时候就会产生类型转化异常(ClassCastException),例如

List<Dog> dogs2=Collections.checkedList(new ArrayList<Dog>(), Dog.class);
dog2.add(new Cat());


    当你试图防止Dog的类中插入Cat时候就会报异常。但是将导出类放置到容器里里面可以正常运行

    我的疑问:
他的实现原理是什么样的呢,没找到JDK中对应的实现。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics