返回指定 collection 的一个动态类型安全视图。试图插入一个错误类型的元素将导致立即抛出 classcastexception。假设在生成动态类型安全视图之前,collection 不包含任何类型不正确的元素,并且所有对该 collection 的后续访问都通过该视图进行,则可以保证 该 collection 不包含类型不正确的元素。
一般的编程语言机制中都提供了编译时(静态)类型检查,但是一些未经检查的强制转换可能会使此机制无效。通常这不是一个问题,因为编译器会在所有这类未经检查的操作上发出警告。但有的时候,只进行单独的静态类型检查并不够。例如,假设将 collection 传递给一个第三方库,则库代码不能通过插入一个错误类型的元素来毁坏 collection。
动态类型安全视图的另一个用途是调试。假设某个程序运行失败并抛出 classcastexception,这指示一个类型不正确的元素被放入已参数化 collection 中。不幸的是,该异常可以发生在插入错误元素之后的任何时间,因此,这通常只能提供很少或无法提供任何关于问题真正来源的信息。如果问题是可再现的,那么可以暂时修改程序,使用一个动态类型安全视图来包装该 collection,通过这种方式可快速确定问题的来源。例如,以下声明:
collection c = new hashset();
可以暂时用下面的声明代替:
collection c = collections.checkedcollection(
new hashset(), string.class);
再次运行程序会造成它在将类型不正确的元素插入 collection 的地方失败,从而清楚地识别问题的来源。问题得以解决后,可以将修改后的声明转换回原来的声明。
返回的 collection 不会 将 hashcode 和 equals 操作传递给底层实现 collection,但这依赖于 object 的 equals 和 hashcode 方法。在底层实现 collection 是一个 set 或一个列表的情况下,有必要遵守这些操作的协定。
如果指定 collection 是可序列化的,则返回的 collection 也将是可序列化的。
- 参数:
c
- 将返回其动态类型安全视图的 collectiontype
- 允许 c 持有的元素类型
- 返回:
- 指定 collection 的动态安全类型视图
- 从以下版本开始:
- 1.5