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
キーと値を持つエントリを処理しているようです。コメントでは、それはまた次のように述べています:Object
keyPool
String
これは、JSONObject.put(string、object)によって使用されます。
したがって、JSONオブジェクトのキーはであると想定するのが正しいでしょうStrings
。
MyClass
タイプをString
直接アップキャストすることはできません(のString
スーパークラスではありませんMyClass
)。そのため、コンストラクターはフォームのマップを必要とするため、実際にマップについて不平を言っていますHashMap<String,Object>
(とに問題はないことに注意してくださいFloat
)Object
。
この問題を修正するには、を使用して、オブジェクトの表現をHashMap<String,Float>
格納する場所を定義する必要があります。String
MyClass
toString
を使用できない場合は、で表されるコードを特定のオブジェクトにString
マップする中間構造の使用を検討できるため、クラスを保持できます。String
MyClass
MyClass