第一个是类型安全的,因为列表为空,但仍不建议使用。在这里使用原始类型没有任何 好处 。最好设计成远离警告而不是抑制它。
二是绝对 不 类型安全的,因为
theList可能是
List<Integer>例如:
import java.util.*;public class Test { public static void main(String[] args) throws Exception { List<Integer> integers = new ArrayList<>(); integers.add(0); List<String> strings = new ArrayList(integers); // Bang! String x = strings.get(0); }}请注意,构造函数本身是如何被无例外调用的-它无法让您知道您 实际上 试图构造的列表类型,因此它不执行任何强制转换。但是,当您随后 获取
值时,该值隐式转换为,
String并获得
ClassCastException。



