有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

Null Object design pattern


共 (1) 个答案

  1. # 1 楼答案

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

    为了减少这个空对象设计模式中的类NullXXX(它实际上只是工厂设计数据,而不是模式本身),您可以创建一个static final NullCustomer,它总是返回

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

    EclipseIntelliJ还提供编译时注释@Nullable@NonNull,它们在访问潜在的null对象时发出编译器警告。然而,许多框架没有注释。因此,IntelliJ试图通过静态分析来实现discover those potential null accesses。 除了很少采用这种方法之外,IntelliJ和Eclipse使用它们自己的注释(org.eclipse.jdt.annotation.NonNullcom.intellij.annotations.NotNull),这些注释是不兼容的。但是,你可以在IntelliJ中使用store the annotations outside of the code。Eclipse也希望在将来实现这一点。问题是有many frameworks providing this feature给你很多不同的注释,它们做的都是一样的。有JSR-305处于休眠状态。它将在javax中提供一个注释。我不知道他们为什么没有进一步推动这一点