gpt4 book ai didi

java - 将对象类型转换为任何 Collection 类型

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:07 25 4
gpt4 key购买 nike

我们最近在代码中遇到了一个基本上与 OOP 概念相关的错误。

class ABC
{
String a;
ABC(){
a = "abc";
}
}

public class Main {


static Object listABC() {
List<ABC> listOfABC = new ArrayList<>();
listOfABC.add(new ABC());
return listOfABC;
}

public static void main(String[] args) throws java.lang.Exception {

List<Long> listLong = (List) Main.listABC();
System.out.println(listLong.get(0));
}
}

Output: ABC@642c39d2

这不应该引发运行时异常吗?有人可以指出正确的方向,说明为什么这段代码不引发异常吗?

最佳答案

通用类型被删除,在您的示例中,关于它们的信息在运行时不再存在。它们只是编译时的帮助。将 List 转换为 List 也会在编译时丢弃有关类型的信息,尽管它仍然是一个有效的转换。

因此,只要您在每一步都进行合法转换(确实如此),它就可以正常编译。在运行时,关于列表中类型的信息在这里消失了。

如果您尝试将 get(0) 转换为 Long 然后,您会得到一个类转换异常,因为该项目本身是一个 ABC。

关于java - 将对象类型转换为任何 Collection 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39483381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com