当用Java生成模型类时,我在模板中进行了检查,以确定该属性是否是容器(列表/映射),然后执行空检查。为了进行防御性编程,如果此字段为null,我想返回一个空的collection / map。
所以模板看起来像这样:
{{/vars}}
public {{classname}}({{#vars}}@JsonProperty("{{baseName}}") {{#required}}@lombok.NonNull {{/required}}{{>nullableDataType}} {{name}}{{#hasMore}},
{{/hasMore}}{{/vars}}) {
{{#vars}}
{{#isContainer}}
if ({{name}} == null) {
this.{{name}} = {{#isListContainer}}Collections.emptyList();{{/isListContainer}}{{#isMapContainer}}Collections.emptyMap();{{/isMapContainer}}
}
{{/isContainer}}
{{^isContainer}}
this.{{name}} = {{name}};
{{/isContainer}}
{{/vars}}
}
{{#vars}}
将被翻译成什么:
public MyRequestBodyObject(@JsonProperty("someField") String someField,
@JsonProperty("dates") List<Period> dates) {
this.someField = someField;
if (dates == null) {
this.dates = Collections.emptyList();
}
}
这对于反序列化响应非常有效,但问题在于请求主体对象现在也具有相同的行为。
对于请求主体对象,我认为在空列表或空列表之间进行区分是有意义的,因为它可以具有不同的含义。
我知道isBodyParam变量,但这仅在端点中定义时才设置为true,而在它是$ref
对象时则没有设置。
问题
有没有办法知道当前对象是否是有效载荷对象?