<p> THAT'S OK: ${((Map<String,Integer>)view.get("upgrade_assignment_type_map")).toString()} </p>
<p> THAT'S ALSO OK:
for( String _name : ((Map<String, Integer>)view.get("upgrade_assignment_type_map")).keySet() ) {
<p> ${_name}: ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get(_name)} </p>
}
</p>
<br><br>
<p> SADLY THAT'S NOT OK::: ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get("MANUAL")} </p>
上記のコード セグメントは、私にとって驚くべき次の出力を出力します。
THAT'S OK: {AUTO_WITH_BALANCE_EMPHASIS=2, AUTO_WITH_OFFENSIVE_EMPHASIS=0, MANUAL=3, AUTO_WITH_DEFENSIVE_EMPHASIS=1}
THAT'S ALSO OK:
AUTO_WITH_BALANCE_EMPHASIS: 2
AUTO_WITH_OFFENSIVE_EMPHASIS: 0
MANUAL: 3
AUTO_WITH_DEFENSIVE_EMPHASIS: 1
SADLY THAT'S NOT OK:::
コード セグメントの最後の行はキー "MANUAL" の値を取得しようとしますが、値を出力していません。それを toString (のように${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get("MANUAL").toString()}
) に変換しようとすると、実行時に null が返されます。なぜそれが起こっているのか理解できませんか?
<p> ${_name}: ${_name.length()} : ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get(_name)} </p>
そして、取得した各キーの長さ(最初のコロンの後)を出力すると:
AUTO_WITH_BALANCE_EMPHASIS: 29 : 2
AUTO_WITH_OFFENSIVE_EMPHASIS: 29 : 0
MANUAL: 10 : 3
AUTO_WITH_DEFENSIVE_EMPHASIS: 30 : 1
注:Javaソース内にマップを作成していますMap<String, Integer> nameToTypeMap = Maps.newHashMap();