在下面的内容中,我在第 5 行(而不是第 4 行)收到运行时异常。该强制转换实际上在做什么? 任何见解或相关阅读的链接都很棒。
List list = new LinkedList();
list.add(new Date());
list.add("Hello");
List<String> list2 = (List<String>)list;
String value = list2.get(1);
最佳答案
What is that cast actually doing?
执行时什么都没有。这就是为什么您会收到一条警告,指出这是一个未检查的强制转换 - 它并没有真正检查任何内容,因为对象本身(在执行时)没有 List<String>
的概念。 - 这只是一个列表。如果您有:
Object x = ...;
List<String> list = (List<String>) x;
然后会检查 x
引用某种类型的列表...但它不会检查列表的“字符串性”。
不幸的是,这就是 Java 泛型的工作方式:(
关于java - 当您尝试将 LinkedList 转换为 LinkedList<String> 时,编译时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26687576/