java空对象设计模式与空对象检查
为什么空对象设计模式优于空对象检查。 如果我们在空对象设计模式中查看内存占用,我们将创建一个相同类型的新虚拟对象。这表明,如果我们在搜索查询中有大尺寸的对象和大量可为空的对象,这种模式将创建大量的空对象,这将比简单的检查占用更多内存,而检查空对象会导致性能上的不可忽略的延迟
你可以在下面搜索框中键入要查询的问题!
为什么空对象设计模式优于空对象检查。 如果我们在空对象设计模式中查看内存占用,我们将创建一个相同类型的新虚拟对象。这表明,如果我们在搜索查询中有大尺寸的对象和大量可为空的对象,这种模式将创建大量的空对象,这将比简单的检查占用更多内存,而检查空对象会导致性能上的不可忽略的延迟
# 1 楼答案
null
的全部问题是,如果尝试访问null
值,应用程序将抛出NullPointerException
并中止为了减少这个空对象设计模式中的类
NullXXX
(它实际上只是工厂设计数据,而不是模式本身),您可以创建一个static final NullCustomer
,它总是返回在Java8中,可以使用Optional方法来判断函数何时不总是返回值。这种方法不会强迫您创建污染整体结构的任意空类(请考虑可能也必须重构这些空类)
Eclipse和IntelliJ还提供编译时注释
@Nullable
,@NonNull
,它们在访问潜在的null
对象时发出编译器警告。然而,许多框架没有注释。因此,IntelliJ试图通过静态分析来实现discover those potential null accesses。 除了很少采用这种方法之外,IntelliJ和Eclipse使用它们自己的注释(org.eclipse.jdt.annotation.NonNull
,com.intellij.annotations.NotNull
),这些注释是不兼容的。但是,你可以在IntelliJ中使用store the annotations outside of the code。Eclipse也希望在将来实现这一点。问题是有many frameworks providing this feature给你很多不同的注释,它们做的都是一样的。有JSR-305处于休眠状态。它将在javax
中提供一个注释。我不知道他们为什么没有进一步推动这一点