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

时间:2018-07-31 13:57:52

标签: swagger swagger-codegen

Swagger代码生成工具是否具有一个选项,用于选择所生成的类应具有默认为null还是为空的List,Maps等?

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

此刻,默认值为null,即private List<String> names = null

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

讨论中包含了为什么会更好的原因,我对此没有反对意见。但是我有一个旧版应用程序,它使用了某种形式的(Swagger)生成的源,几乎没有进行任何修改,而我试图摆脱这些源,只使用swagger生成的模型。问题在于,代码最初是以无法有空值的方式编写的,因此不会执行空值检查。

那该怎么办?使用以前的Swagger代码生成器?

该API不在我的控制范围内,因此不能进行yaml修改(如果这样做甚至可以提供帮助)。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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