从 Java DTO 类型生成一个类型,其中许多字段为空,并且所有 getter 均为可选<T>

问题描述 投票:0回答:1

我目前正在使用一个 Java DTO 类(由其他人编写),该类有近 300 个字段,其中许多字段最终为空。我在代码库中看到的是很多空检查,最近我一直在使用

Optional.ofNullable
来解决这个问题(假设我来自函数背景)并发现它更容易使用。

但是,我希望避免在需要访问这些字段之一的任何地方都要记住这样做,并可能返回一种不同类型的对象,其中返回类型始终为

Optional<T>

有一篇类似的文章here关于Python中的问题,但我对Java中也可以完成的事情感兴趣。我当然可以接受它,或者自己生成一个带有可选吸气剂的单独的类,但如果有人有任何更聪明的方法或良好的设计模式可用于此类情况,我很感兴趣。

在我的例子中,当字段为空时,最常见的情况不是抛出异常,而是使用一些后备机制或默认值,这就是Optional类工作得很好的原因。

java nullpointerexception option-type dto
1个回答
0
投票

我终于有时间回来讨论这个问题,最后我做的是使用一些基本模板从原始类生成一个新类,返回

Optional<T>
get 方法,如下所示。

  public class WithOptionalGettersClass {
    private final class WithNullableGettersClass nullFields;

    public WithOptionalGettersClass(WithNullableGettersClass nullFields) {
      this.nullFields = nullFields;
    }

    public Optional<String> getName() {
      return Optional.ofNullable(this.nullFields.getName());
    }

    public Optional<String> getComment() {
      return Optional.ofNullable(this.nullFields.getComment());
    }

    public Optional<LocalDate> getDate() {
      return Optional.ofNullable(this.nullFields.getDate());
    }
    
    // With many more such getOptionalXXX methods below

如果想更进一步,那么可以将带有可选吸气剂的新类的“自动生成”集成到相关的构建管道中。

我希望其他人觉得这很有用。

© www.soinside.com 2019 - 2024. All rights reserved.