gpt4 book ai didi

java - 为什么在将 Throwable 向下转换为 Exception 时没有给出未经检查的转换警告?

转载 作者:搜寻专家 更新时间:2023-10-31 08:26:13 27 4
gpt4 key购买 nike

使用这段代码:

public class DowncastTest {
public static void main(String[] args) {
try {
System.out.println(1);
} catch (Exception ex) {
Throwable cause = ex.getCause();
if (cause != null) {
Exception exCause = (Exception)cause;
System.out.println(exCause);
}
}
}
}

为什么 javac 不给出未经检查的转换警告?

Exception 扩展了 Throwable,因此您不能将所有 Throwable 都转换为 Exception

最佳答案

Why does the javac not give an unchecked cast warning?

因为不涉及泛型。我不认为“unchecked cast”意味着你认为的意思。适用于以下情况:

List<?> list = getListFromSomewhere();
List<String> strings = (List<String>) list;

这是一个未经检查的转换,因为转换为 List<String>并没有真正检查是否 list指的是 List<String> ...它做不到,因为在执行时没有这样的概念。

您目前从 Throwable 获得的 Actor 阵容至 Exception只是一个普通的转换 - 它会抛出一个 ClassCastException如果cause是对不是 Exception 对象的引用(或子类)。

关于java - 为什么在将 Throwable 向下转换为 Exception 时没有给出未经检查的转换警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24890669/

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