ski*_*iwi 5 java casting unchecked-cast
使用此代码:
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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么javac没有给出未经检查的演员警告?
Exception扩展Throwable,所以你不能只将所有Throwables 转换为Exception.
Jon*_*eet 10
为什么javac没有给出未经检查的演员警告?
因为没有涉及泛型.我不认为"unchecked cast"意味着你认为它意味着什么.它适用于以下情况:
List<?> list = getListFromSomewhere();
List<String> strings = (List<String>) list;
Run Code Online (Sandbox Code Playgroud)
这是一个未经检查的强制转换,因为强制转换List<String>并不真正检查是否list引用List<String>...它无法执行,因为在执行时没有这样的概念.
你此刻从那里得到的投Throwable到Exception只是一个普通的演员-它会抛出一个ClassCastException,如果cause是一个对象的引用是不是一个Exception(或子类).
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |