gpt4 book ai didi

java - Collections 类中 checkedList 方法的用途

转载 作者:行者123 更新时间:2023-12-02 15:28:03 25 4
gpt4 key购买 nike

api 说“返回指定集合的​​动态类型安全 View ”但是当泛型可以在编译时检测到是否有任何可疑的东西被插入到集合中时,仍然需要它。

文档说“语言中的泛型机制提供了编译时(静态)类型检查,但有可能通过未经检查的强制转换来破坏该机制

但即使这样也行不通

List<Integer> list = new ArrayList<Integer>();
Object o = new Float(1.2);
Integer i = (Integer)o; // line3
list.add(i);

但即使是这个也会在运行时失败并在第 3 行抛出 ClassCastException 因为 o 实际上持有一个 Float ,无法将其转换为 Integer 。所以,我想知道如何绕过静态编译时通用检查来证明 checkedList 方法的存在

最佳答案

这可以通过不使用泛型来完成,如果您使用的库是使用没有泛型的 Java 版本构建的,则可以做到这一点。

以下代码是如何使用泛型执行此操作的示例:

List<Integer> list = new ArrayList<Integer>();
List unsafeList = list; // Cast to a list that is not using generics
Object o = new Float(1.2);
unsafeList.add(o);
// list now contains a non Integer object.

这确实会产生几个警告,但您当然可以根据需要忽略这些警告。

关于java - Collections 类中 checkedList 方法的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29388331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com