- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
查看 java.util.OptionalInt
的源代码,一个可选的 int 由一个 int value
和一个 boolean isPresent
组成。获取空可选 int 的唯一方法是通过返回 OptionalInt.EMPTY
的 OptionalInt.empty()
方法,这是所有空可选 int 的通用实例。
如果是这种情况,那么为什么 isPresent()
方法实现为 return isPresent
而不是 this == EMPTY
并减少通过删除 isPresent
字段来使用内存?
最佳答案
这是一个实现选择,只有编写实现的人才能给出明确的答案。
但很可能这是一种将代码的可读性、清晰性和可维护性置于内存微优化之上的选择。
担心 boolean 值在包装 int 的对象中占用的空间确实没有多大意义。如果该空间是相关的,考虑到对象头至少需要 8 个字节(在 32 位 JVM 上,更多关于64 位)已经。
Java 不是用来编写内存受限的应用程序的,它是用来编写易于维护的代码的。将 isPresent()
实现为 isPresent
的 getter 更易于阅读,重构时不易出错,并且符合既定的 Java 编码实践。
旁注:由于 Java 对象是 8 字节对齐的,因此当您删除 作为Eugene在评论中指出,它实际上确实增加了大小,因为字段 isPresent
时,它甚至可能不会使类变小。isPresent
正好位于边界上,然后再添加 7 个字节用于填充。
关于java - OptionalInt.isPresent 字段的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52249824/
关于https://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained据解释,guava(以及后来的 java 8
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
这个问题已经有答案了: How to execute logic on Optional if not present? (14 个回答) 已关闭 5 年前。 我有以下代码块: Optional re
我有一个包含几个可选值的对象,其中可选值不为空,我想将其值作为参数传递给需要多个参数的方法。 目前我有一个代码块,如下所示: if (dealerRequest.getIsApproved().isP
有人可以解释一下Optional如何帮助我们避免NullPointerException吗? Optional op = someFunc() if(op.isPresent()) { op.g
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
查看 java.util.OptionalInt 的源代码,一个可选的 int 由一个 int value 和一个 boolean isPresent 组成。获取空可选 int 的唯一方法是通过返回
这个问题在这里已经有了答案: 'Optional.get()' without 'isPresent()' check (5 个答案) 关闭 5 年前。 由于我在访问以下代码段的 Sonar 问题中
谁能解释一下 Optional 如何帮助我们避免 NullPointerException? Optional op = someFunc() if(op.isPresent()) { op.g
我从 Google Play 开发者控制台收到以下错误消息。除了 try/catch 之外,我找不到任何可以给出空指针的东西,是吗?Geocoder.isPresent() 在 API 8 中不可用?
我该如何改变: if (pAlarms[0].getMoIdentifier().isPresent()) { Optional alarmValues = getAlarmsFromMo(p
我在 Java 中有以下代码: public class Browser { public URL back() { try { //simulate: fetch last
我的 ContentView 有两个不同的模态视图,所以我对两者都使用了 sheet(isPresented:),但似乎只显示了最后一个。我该如何解决这个问题?还是无法在 SwiftUI 中的 Vie
这个问题在这里已经有了答案: In protractor, browser.isElementPresent vs element.isPresent vs element.isElementPre
在 Java 8 中是否有更漂亮的方法来避免 isPresent 和 get? void doStuff(String someValue, Optional doIt) { if (doIt
我运行 SonarQube 来检查我的代码,我发现了一个我不理解所报告错误的情况。 我的代码是: private static final int BASE_ID = 100_000_000; pri
这个问题在这里已经有了答案: Using Java 8's Optional with Stream::flatMap (12 个答案) 关闭 6 年前。 有没有更优雅的方法可以在 Java 8 中
我刚开始使用 Protractor 编写测试。我想知道 isPresent() 和 isDisplayed() 方法之间有什么区别。 API 定义 isPresent isDisplayed 那么..
我有一个 User 和关联的有时间限制的 Role。我想知道 User 是否有特定的 UserRole 并且它未过期。我可以将用户的角色变成一个流,filter() 它和 findFirst(),给我
我在这里修改了基本代码[github] https://github.com/OpenHFT/Chronicle-Queue/blob/master/docs/How_it_works.adoc 基本
我是一名优秀的程序员,十分优秀!