gpt4 book ai didi

java - 无限通配符类型在运行时如何工作?

转载 作者:行者123 更新时间:2023-11-30 07:47:29 25 4
gpt4 key购买 nike

我知道无界通配符类型将被删除并替换为对象 vy 类型删除,无界通配符类型是可具体化的类型,类型信息在运行时完全可用。我知道 List<Object> , List, List<?> 之间的区别.我知道什么是 List<?>在编译时。我知道 List<?>存储未知类型。我知道它具有很强的编译时安全性和灵 active ,但我想知道在运行时会发生什么。

但我无法理解 List 在运行时是什么。

它是对象引用列表吗?是原始类型列表吗?

例如

List<?> list = new ArrayList<Integer>();

运行时列表是什么以及如何表现?

我阅读了所有 Java 语言规范,请不要只给我一个常见问题解答。

请注意,我阅读了以下问题但没有找到答案(可以重复)

Generics Java, unbounded wildcard

最佳答案

好吧,在您的示例中,您的通配符不是是无限的。

List<?> list =new ArrayList<Integer>();

What is the list at runtime and how to behave?

在运行时,您的列表是 ArrayList 的一个实例其中包含 Integer对象。您链接的问题很好地回答了当您使用通配符时会发生什么。请注意以下几点:

List<?> list = new ArrayList<?>();

不会编译,并向您抛出以下错误:

Cannot instantiate the type ArrayList<?>

当谈到接口(interface)时,通配符是可以接受的,但是你不能用通配符“直接”实例化任何对象。你必须以某种方式,在你的实现中的某个地方,告诉你的界面你希望他持有什么类型的对象。即使这意味着 List<Object> .

关于java - 无限通配符类型在运行时如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775706/

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