0

我需要在 YAML 中转储一些复杂的 Java 对象列表。为了获得所需的结构,我首先将它们转换为嵌套列表和映射。所以它有点像:

- item 1
    name : value
    name : value
        - another list
        ...
- item 2
...

或者在 Eclipse 调试器视图中 [...,...] 是一个列表, {name:value,name:value} 是一个映射,它看起来像 [{item1={name:value, name:value[{anotherlist} ]}项目2=...]。乱七八糟,但没那么长,也没那么难理解,就是乏味。

问题是这些块中有一些是可选的,所以我得到了一些空列表或空值:

- item 1
    null : null
    name : []
- item 2
and so on

这很混乱,无法再次读取。而且我无法检查更高级别的列表或地图之一,因为它们可能包含空列表、空地图或空值。我不想一遍又一遍地写 if (value != null && !value.isEmpty) 。正如我所看到的,我有 3 个选项:

  • 我可以在技术上修改模板,但如果我不需要,我不想搞砸。之后我可以检查整个构造并取出所有空值和空构造。但是手动编写会很长而且嵌套和递归使用 if (value.isList) 和 if (value.isMap) 一直听起来也不是很好。
  • 我可以写

    private Map putUnlessNullOrEmpty(Map, Name, Value) 
    private List addUnlessNullOrEmpty(List, Name, Value)
    

方法。这就是我所做的,但它看起来非常 unjavaish。

  • 如果我可以将这些方法添加到该类中的列表和地图中,那就太好了。或覆盖/重载 put/add 方法。我可以编写单独的类(或内部类)来扩展通常的映射和列表,这只是另一种方法。但这听起来有点过分。

我对 Java 或一般编程还没有那么丰富的经验。你怎么看?

4

0 回答 0