代码生成默认初始化为空列表而不是 null

Code generation to initialise by default to empty list instead of null

Swagger 代码生成工具是否有一个选项来选择生成的 类 列表、地图等是否应该默认为 null 或空?

以前,默认为空,例如 private List<String> names = new List<String>

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

更改是在 2017 年 4 月完成的,根据我从 changes made 中了解到的情况,没有选择要使用的选项,从那时起它始终默认为 null。

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

那么可以做什么呢?使用以前版本的 Swagger codegen?

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

根据评论 [Java] How can we set List and Map to null by default in models?,您需要编辑 java(最有可能 pojo.mustache)的所有小胡子模板文件并更改实例化 lists/maps 的方式.

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

我能够在我的规范文件中做到这一点:default: []