在 Java 11 中运行此代码时,我期待 ClassCastExpection,但它执行时没有问题,这种情况有解释吗?
List<?> list = List.of(new HashMap<>());
List<String> listOfStrings = (List<String>) list;
System.out.println("List size: " + listOfStrings.size());
Run Code Online (Sandbox Code Playgroud)
Java 泛型在运行时被擦除,因此无法检查强制转换。一旦您从结果列表中访问非字符串,您将收到 ClassCastException。这就是此代码生成未经检查的强制转换警告的原因。