java - 在 Java 中避免 != null 有什么好处?

标签 java null

我已阅读此主题:Avoiding != null statements但我看不到好处。

  1. 如果返回空数组,则需要检查“真实”数组的位置以及空数组的位置。

  2. 您必须使用 getName().length > 0,而不是使用像 getName() != null 这样的代码。例如,我正在做一个项目,我需要用很少的归档器来压缩一些数据,因此我决定选择尺寸最小的压缩数据。如果我从存档器“compress”方法返回 null,我需要检查返回值是否不为 null。如果我决定返回一个空数组,那么我还需要检查它是否为空。

我说得对吗?

最佳答案

使用空集合或“空白”操作而不是 null 的主要优点是,在大多数情况下,此类对象无需进一步修改即可在代码中工作。 null 值,就其核心而言,由于其性质而更容易出错。

以下面的代码为例:

String[] names = data.getNames();
if (names != null) {
    for (String name : names) {
        // Do stuff
    }
}

null 的检查是必需的,否则您将获得 NPE。使用标准的 for 循环并不能解决问题。另一方面,如果您知道您总是会得到某种数组,那么您的代码将正常 运行而无需额外检查。如果数组为空,则循环根本不会运行。问题解决了。

实现某种形式 Action 的代码也是如此。另一个例子:

Action myAction = data.getActionToRun();
if (myAction != null) {
    myAction.run();
}

再一次,您需要一个null 检查。如果保证该操作存在,那么您可以随时调用 action.run() 而不会产生副作用,但空白操作不会执行任何操作。就这么简单。

在许多情况下,如果您修改方法的返回方式,则可以简单地丢弃 null 检查,从而使代码更加简单易懂。在某些情况下,返回 null正确的选择(例如,从键和值的集合中获取对象),因为没有默认的“无操作”值。但是 null 表示根本没有值,它需要接收方进行额外处理。使用空白的、无 Action 的、非空对象允许错误由数据对象处理。这是很好的封装。这是很好的编程。它就是有效。™

最后,返回null肯定不是处理错误的好方法。如果您的代码出现错误,除非您作为程序员犯了编程错误,否则应该永远不会出现错误,请使用断言或异常。那些都是失败。不要将 null 用作失败案例,将其用作简单的缺少值。

关于java - 在 Java 中避免 != null 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11573124/

相关文章:

java - 从 GWT 中的 flexTable 中删除行

java - 如何检测文件是否不是utf-8编码?

Java Axis WebService 重载控制

java - Querydsl 忽略 JPA 实体的公用表表达式别名

javax.servlet.http.Part.getSubmittedFileName()Ljava/lang/String

c# - ??运算符未触发 DataTable DataRow 中的 System.DBNull 类型

java - 为什么 stringbuilder 在使用空字符后停止添加元素?

mysql - 选择至少有一个空值的行

c++ - 释放链表节点时出现段错误

sql - 替换空值的 SQL 查询。