org.jsonライブラリを使用しているようです。クラスのコードを見るとJSONObject、明らかにジェネリックを使用していません。
public JSONObject(Map map) {
this.map = new HashMap();
if (map != null) {
Iterator i = map.entrySet().iterator();
while (i.hasNext()) {
Map.Entry e = (Map.Entry)i.next();
Object value = e.getValue();
if (value != null) {
this.map.put(e.getKey(), wrap(value));
}
}
}
}
このマップは、一意のキーを管理するために使用するマップの外観から、Stringキーと値を持つエントリを処理しているようです。コメントでは、それはまた次のように述べています:ObjectkeyPoolString
これは、JSONObject.put(string、object)によって使用されます。
したがって、JSONオブジェクトのキーはであると想定するのが正しいでしょうStrings。
MyClassタイプをString直接アップキャストすることはできません(のStringスーパークラスではありませんMyClass)。そのため、コンストラクターはフォームのマップを必要とするため、実際にマップについて不平を言っていますHashMap<String,Object>(とに問題はないことに注意してくださいFloat)Object。
この問題を修正するには、を使用して、オブジェクトの表現をHashMap<String,Float>格納する場所を定義する必要があります。StringMyClasstoString
を使用できない場合は、で表されるコードを特定のオブジェクトにStringマップする中間構造の使用を検討できるため、クラスを保持できます。StringMyClassMyClass