空对象设计模式Vs null对象检查

Muh*_*sir 9 java design-patterns nullable conditional-statements

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

空对象设计模式

lsc*_*tze 6

整个问题null是,如果您尝试访问一个null值,应用程序将抛出NullPointerException并中止.

要减少NullXXXnull对象设计模式中的类数(实际上只是工厂设计数据,而不是模式本身),您可以创建一个static final NullCustomer始终返回的类.

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

EclipseIntelliJ还提供编译时注释@Nullable,@NonNull在访问潜在null对象时会给出编译器警告.但是,许多框架没有注释.因此,IntelliJ尝试使用静态分析发现那些潜在的空访问.除了这种方法采用率低之外,IntelliJ和Eclipse使用自己的注释(org.eclipse.jdt.annotation.NonNull,com.intellij.annotations.NotNull)那些不兼容的注释.但是,您可以将注释存储在IntelliJ中工作的代码之外.Eclipse也希望将来实现这一点.问题是,有许多框架提供此功能,为您提供许多不同的注释.有JSR-305处于休眠状态.它提供了一个注释javax.我不知道为什么他们没有进一步推动这一点.