gpt4 book ai didi

java - 在集合中使用 UNSAFE

转载 作者:行者123 更新时间:2023-11-29 05:32:42 25 4
gpt4 key购买 nike

我注意到在 Java 7 中,集合类(在我的例子中是 ConcurrentLinkedQueue)使用 UNSAFE 类进行交换和查找操作。
偏移量似乎是在编译时声明中计算的:

itemOffset = UNSAFE.objectFieldOffset(local.getDeclaredField("item"));

如果我们在编译时没有确切的参数化类型,例如当我们尝试将苹果插入到具有 Collection<? super Apple> 的方法中时,这将如何工作?在声明中。

它是否使用'Apple'作为声明的类来计算偏移量?
如果您能帮助理解 UNSAFE 在此处计算偏移量的方式,我们将不胜感激。

最佳答案

Jave 不允许我们使用原始类型作为泛型的类型参数,只允许引用类型。引用类型存储为始终具有相同大小的引用,因此无论它们如何参数化,某些泛型类的对象的内部表示始终相同。

因此,集合项的确切类型并不重要,因为 item 是一个始终具有相同大小的引用。

关于java - 在集合中使用 UNSAFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584970/

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