代码之家  ›  专栏  ›  技术社区  ›  kaskelotti

默认情况下初始化为空列表而不是空列表的代码生成

  •  0
  • kaskelotti  · 技术社区  · 6 年前

    Swagger代码生成工具是否可以选择生成的类是否应该将列表、映射等默认为空?

    以前,默认值是空的,例如 private List<String> names = new List<String> .

    目前,默认值为空,即。 private List<String> names = null

    这项更改是在2017年4月完成的,基于我从 changes made 没有选择使用哪个的选项,从那以后它总是默认为空。

    讨论中包含了为什么这样更好的原因,我对此没有异议。但我有一个遗留的应用程序,它使用了某种形式的(招摇过市)生成的源代码,几乎没有修改,我正试图摆脱这些,只使用招摇过市生成的模型。问题是,代码最初的编写方式不能有空值,因此不会进行空检查。

    那么我们能做些什么呢?使用以前版本的虚张声势代码?

    API不在我的控制范围内,因此yaml修改不是一个选项(如果这样做甚至可以提供帮助的话)。

    2 回复  |  直到 6 年前
        1
  •  1
  •   kaskelotti    6 年前

    我在猜测问题的时候解决了这个问题,并将codegen cli版本降级到2.2.2,这是AFAIK的最后一个版本,它创建的列表和映射是空的,而不是空的。

        2
  •  1
  •   Damian Balawender    6 年前

    基于评论 [Java] How can we set List and Map to null by default in models? 您需要为java编辑任何胡子模板文件(很可能是pojo.mustache)并更改列表/映射的实例化方式。