java - 避免对 bean 属性进行大量 != null 检查

标签 java nullable

考虑我有以下 bean :

@Entity
public class Currency {

    private String currency;

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }
}

@Entity
public class SomeEntity  {
    private Currency currency;

    public Currency getCurrency() {
        return currency;
    }

    public void setCurrency(Currency currency) {
        this.currency = currency;
    }
}

我有 SomeEntity 的实例:

SomeEntity entity;

在代码中的某个位置,我想使用某些实体的属性,但实体可能为 null 并且某些实体的属性可能为 null,所以我当前的代码实现远非易于阅读:

new ConstantExpression(entity == null ? null :entity.getCurrency() != null ?entity.getCurrency().getId() : null)

对于这种情况,有什么方法可以提高代码的可读性吗?

更新:我的代码库足够大,所以Null object pattern实现需要大量修改。另外,我的bean是用JPA持久化到数据库的,所以我必须做额外的编码,比如级联注释等。

最佳答案

您可以使用Null Object Pattern .

  • 创建一个Currency 子类,其中getId() 始终返回null
  • 拥有此类的单个实例,用于初始化所有currency 字段。
  • 现在 getCurrency().getId() 是安全的。
  • 如果您愿意,可以对 SomeEntity 重复相同的操作

关于java - 避免对 bean 属性进行大量 != null 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12834864/

相关文章:

kotlin - Realm :如何通过DynamicRealm判断字段是否可为空?

java - Spring Data + Mongo- 无分组字段求和

java - 什么时候使用 FileChannel 读取()/写入()文件?

java - 多次打印字符

objective-c - 使用nonnull时没有警告?

c# - 如何在 Entity Framework 中具有映射到可为空的数据库列的值类型?

Java正则表达式匹配器不匹配

java - Spring MVC 服务 Bean 加载两次

sql-server - Varchar 列 : Nullable or not

c# - C# 中可空类型的替代方法