以下代码
import java.util.*;
import java.io.*;
@SuppressWarnings("unchecked")
List<Serializable> list = (List<Serializable>) (List<?>)
Collections.singletonList(new Object());
for (Object el : list) { // -> ClassCastException
System.out.println(el);
}
是正确的 Java(即使代码是可疑的)。使用javac
and java
6 它抛出
Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to java.io.Serializable
虽然它在使用javac
和java
7 时运行没有错误。
是语言更改、修复错误还是隐藏功能?
(注意:使用 Eclipse 编译的代码在检查的所有 Eclipse 版本上运行时都没有错误 - Helios 到 Kepler。)