プロパティの深さを決定する先頭のスペースの数で階層化されたテキスト ファイルを解析し、各レベルの Java オブジェクトのセットを返す必要があります。スキャナーを使ったり、一行一行読み込んでみたりも考えましたが、面倒そうでした。おそらく正規表現がより良い解決策でしょうか?読む必要があるファイルは次のようになります。
workarea = workarea:
size = (1583, 805, 0)
areas = areas:
place = array: 2 items
0 = int: 0
1 = int: 0
size = (1583, 805, 0)
areas = array: 2 items
0 = object:
type = myType:
prop1 = prop1
prop2 = array: 2 items
0 = object:
prop1 = prop1
prop2 = prop2
1 = object:
prop1 = prop1
prop2 = prop2
position = (5, 5, 0)
size = (735, 226, 0)
1 = object:
type = myType2:
prop1 = prop1
prop2 = array: 2 items
0 = object:
prop1 = prop1
prop2 = prop2
1 = object:
prop1 = prop1
prop2 = prop2
prop3 = prop3
position = (5, 5, 0)
size = (735, 226, 0)
ご覧のとおり、「領域」オブジェクトが定義されており、5 行下に特定のタイプ (myType1 および myType2) の「オブジェクト」が埋め込まれています。これらの各サブオブジェクトには異なるプロパティがあります (例では、myType2 には prop3 があります。これには、他のオブジェクトの配列が含まれる場合があります)。
この構造を Java オブジェクトのグループに入れる最良の方法は次のとおりです。
Workarea
public String size = "1583,805"
public List<Areas> = (
{Area
public String type = "myType"
Public String prop1 = prop1
etc....
},
{Area
public String type = "myType2"
Public String prop1 = prop1
etc....
}
)