YAML でやや複雑な Java オブジェクトのリストをダンプする必要があります。必要な構造を得るために、まずそれらをネストされたリストとマップに変換しました。つまり、次のようなものです。
- item 1
name : value
name : value
- another list
...
- item 2
...
または、[...,...] がリストであり、{name:value,name:value} がマップである Eclipse デバッガー ビューでは、[{item1={name:value, name:value[{anotherlist}] のようになります。 ]}item2=...]. ごちゃごちゃしていますが、それほど長くはなく、理解するのがそれほど難しくなく、ただ退屈です。
問題は、これらのブロックのいくつかがオプションであるため、いくつかの空のリストまたは null 値を取得することです。
- item 1
null : null
name : []
- item 2
and so on
これはごちゃごちゃしていて、読み込めません。また、空のリスト、空のマップ、またはヌルが含まれている可能性があるため、上位レベルのリストまたはマップのいずれかを確認できません。if (value != null && !value.isEmpty) を何度も書きたくありません。私が見ているように、私には3つのオプションがあります:
- テンプレートを技術的に変更することはできますが、必要がなければ、それを台無しにしたくありません。後で構成全体を調べて、null と空の構成をすべて取り除くことができます。しかし、それを手動で書くと、長くてネストされ、if (value.isList) と if (value.isMap) を常に使用して再帰することも、うまくいきません。
私は書くことができました
private Map putUnlessNullOrEmpty(Map, Name, Value) private List addUnlessNullOrEmpty(List, Name, Value)
メソッド。それは私がやったことですが、非常に素朴に見えます。
- これらのメソッドをそのクラスのリストとマップに追加できれば素晴らしいと思います。または、put/add メソッドをオーバーライド/オーバーロードします。通常のマップとリストを拡張する別のクラス (または内部クラス) を別の方法で作成できます。しかし、それはちょっと過剰に聞こえます。
私は、Java やプログラミング全般についてまだそれほど経験がありません。どう思いますか?