gpt4 book ai didi

java - OptionalInt.isPresent 字段的用途是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:07 26 4
gpt4 key购买 nike

查看 java.util.OptionalInt 的源代码,一个可选的 int 由一个 int value 和一个 boolean isPresent 组成。获取空可选 int 的唯一方法是通过返回 OptionalInt.EMPTYOptionalInt.empty() 方法,这是所有空可选 int 的通用实例。

如果是这种情况,那么为什么 isPresent() 方法实现为 return isPresent 而不是 this == EMPTY 并减少通过删除 isPresent 字段来使用内存?

最佳答案

这是一个实现选择,只有编写实现的人才能给出明确的答案。

但很可能这是一种将代码的可读性、清晰性和可维护性置于内存微优化之上的选择。

担心 boolean 值在包装 int 的对象中占用的空间确实没有多大意义。如果该空间是相关的,考虑到对象头至少需要 8 个字节(在 32 位 JVM 上,更多关于64 位)已经。

Java 不是用来编写内存受限的应用程序的,它是用来编写易于维护的代码的。将 isPresent() 实现为 isPresent 的 getter 更易于阅读,重构时不易出错,并且符合既定的 Java 编码实践。

旁注:由于 Java 对象是 8 字节对齐的,因此当您删除 isPresent 时,它甚至可能不会使类变小。 作为Eugene在评论中指出,它实际上确实增加了大小,因为字段 isPresent 正好位于边界上,然后再添加 7 个字节用于填充。

关于java - OptionalInt.isPresent 字段的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52249824/

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