Objects.isNull 和 ==null区别
时间: 2024-05-03 22:17:23 浏览: 421
在 Java 中,Objects.isNull 和 ==null 都可以用来检测一个对象是否为 null,但它们之间有一些区别。
- Objects.isNull 是 Java 8 中新增的一个静态方法,它是一个更加严谨的空指针检测方式,可以正确处理传入参数为 null 的情况,其源码如下:
```
public static boolean isNull(Object obj) {
return obj == null;
}
```
- ==null 是传统的判断一个对象是否为 null 的方式,它只是简单地检测对象的引用是否为 null,无法处理传入参数为 null 的情况。
因此,建议使用 Objects.isNull 进行空指针检测,它更加严谨和安全。
相关问题
default Integer logicalInsertMultiple(java.util.Collection<DyDailyBillInput> records, DyDailyBillInputDynamicSqlSupport.DyDailyBillInput dyDailyBillInput) { User user = User.getUser(); String username = Objects.isNull(user) ? "system" : user.getUserID() + user.getUserName(); for (DyDailyBillInput record : records) { if (Objects.isNull(record.getId())){ record.setId(IdWorker.nextId()); record.setDeleted(false); if(Objects.isNull(record.getCreateTime())){ record.setCreateTime(LocalDateTime.now()); } if(Objects.isNull(record.getCreatorName())){ record.setCreatorName(username); } if(Objects.isNull(record.getUpdateTime())){ record.setUpdateTime(record.getCreateTime()); } if(Objects.isNull(record.getUpdaterName())){ record.setUpdaterName(username); } if(Objects.isNull(record.getRemark())){ record.setRemark(""); } } } return MyBatis3Utils.insertMultiple(this::insertMultiple, records, dyDailyBillInput, c -> c.map(id).toProperty("id") .map(recordId).toProperty("recordId") .map(errorReason).toProperty("errorReason") .map(belongType).toProperty("belongType") .map(shopId).toProperty("shopId") .map(billTime).toProperty("billTime")解释一下
这是一段 Java 代码,其中定义了一个名为 `logicalInsertMultiple` 的方法。该方法接受两个参数:一个类型为 `java.util.Collection<DyDailyBillInput>` 的记录集合 `records`,和一个类型为 `DyDailyBillInputDynamicSqlSupport.DyDailyBillInput` 的参数 `dyDailyBillInput`。
该方法的作用是将记录集合 `records` 插入到数据库中,并返回插入的记录数。在插入每个记录之前,该方法会对记录进行一些默认的处理。例如,对于没有设置 `id` 字段值的记录,会设置一个新的唯一标识符;对于没有设置 `createTime` 字段值的记录,会将其设置为当前时间;对于没有设置 `creatorName` 字段值的记录,会将其设置为当前用户的用户名等等。
在将记录插入到数据库中时,该方法使用了 MyBatis3Utils 工具类的 `insertMultiple` 方法,并将 `records` 集合中的每个记录映射到 `DyDailyBillInput` 数据表中对应的字段上。具体的字段映射关系可以在 `c.map()` 方法链中设置。
Objects.isNull
Objects.isNull是Java中的一个工具方法,用于判断一个对象是否为null。它与直接使用"=="操作符判断对象是否为null的区别在于,Objects.isNull方法会处理传入的对象为null的情况,并返回一个布尔值表示对象是否为null。[2]这个方法的引入主要是为了提供更加简洁和可读性更好的代码。使用Objects.isNull方法可以使代码更加清晰,减少了重复的null判断代码。[1]在使用时,可以直接调用Objects.isNull(xxx)方法来判断对象xxx是否为null,也可以使用方法引用的方式Objects::isNull来进行判断。[3]
阅读全文