gpt4 book ai didi

java - 空对象设计模式与空对象检查

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:29 24 4
gpt4 key购买 nike

为什么空对象设计模式优于空对象检查。如果我们查看空对象设计模式中的内存占用,我们会创建一个新的相同类型的虚拟对象。这表明如果我们在搜索查询中有大尺寸的对象和大量可为空的对象,这种模式将创建那么多的空对象,这将比简单的检查占用更多的内存,对于 null,我的成本可以忽略不计的性能延迟。

Null Object design pattern

最佳答案

null 的全部问题在于,如果您尝试访问 null 值,应用程序将抛出 NullPointerException 并中止。

要减少此空对象设计模式(它实际上只是工厂设计模式,而不是模式本身)中类NullXXX 的数量,您可以制作一个始终返回的静态最终 NullCustomer

在 Java 8 中,您可以使用 Optional方法来判断函数何时不总是返回值。这种方法不会强制您创建会污染整体结构的任意空类(考虑也可能必须重构这些空类)。

EclipseIntelliJ还提供编译时注释 @Nullable@NonNull,在访问潜在的 null 对象时向编译器发出警告。但是,许多框架没有注释。因此 IntelliJ 尝试 discover those potential null accesses与静态分析。除了这种方法的低采用率之外,IntelliJ 和 Eclipse 使用它们自己的注释(org.eclipse.jdt.annotation.NonNullcom.intellij.annotations.NotNull),这些不是兼容的。但是,你可以 store the annotations outside of the code在 IntelliJ 中工作。 Eclipse 也想在未来实现这一点。问题是有 many frameworks providing this feature给你很多不同的注释做同样的事情。有 JSR-305这是 hibernate 的。它会在 javax 中提供注释。我不知道为什么他们没有进一步插入这一点。

关于java - 空对象设计模式与空对象检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32219558/

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