gpt4 book ai didi

java - 为什么 try-catch 不解决未经检查的泛型转换中的警告?

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:13 25 4
gpt4 key购买 nike

考虑以下 MCVE :

public class MyClass {
private LinkedList<Foo> myList = new LinkedList<Foo>();

// Some irrevelant stuff which includes loading myList

public void myMethod() {
LinkedList<Foo> newList;

try {
newList = (LinkedList<Foo>) myList.clone();
} catch (ClassCastException e) {
// do something in case java screws up
}
}
}

我知道您可以使用 @SuppressWarnings("unchecked") 消除警告,但为什么 try/catch block 不起作用?把try/catch放在那里是不是浪费时间和精力?

最佳答案

那是行不通的,因为您没有为此获得 ClassCastException。

无法在运行时检查列表的删除类型。

当您尝试从 List 中获取某些内容(结果不是 Foo)时,您可能会遇到 ClassCastException,但 List 本身只是一个 LinkedList(不知道它的元素类型可以是什么)。

LinkedList<Foo> 的实例看起来很像 LinkedList<Bar>在运行时。

警告的原因是运行时系统不能保证你做的cast是正确的(它可以检查LinkedList部分,但不能检查泛型)。

关于java - 为什么 try-catch 不解决未经检查的泛型转换中的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030131/

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