我正在尝试创建一个特定类型的JSONObject,它将为我的程序提供所需的功能。
所以我创建了一个这样的类——
class JSONSite : JSONObject() {
val name : String = this.getString("Site")
init {
// A lot of leg work
}
fun doComplicatedStuff(){}
fun doDifficultThings(){}
}
然后我创建了一个这样的扩展 -
fun JSONObject.getJSONSite(key: String) : JSONSite {
return this.getJSONObject(key) as JSONSite
}
但是当我去称它为——
for (key in masterSitesJSON.keys()) {
val site: JSONSite = masterSitesJSON.getJSONSite(key)
site.doTheThings()
}
但正如您可能已经猜到的那样,我收到以下错误。
java.lang.ClassCastException: org.json.JSONObject 不能强制转换为 com.sunny.camping.objects.JSONSite
所以我的问题是,是否有可能创建一种新型的 JSONObject(在本例中为 JSONSite(,为我提供所需的新功能,同时保留 JSONObeect 的基本功能?
我宁愿为我的目的创建一个新的对象/类,而不是用 50 个新扩展混淆 JSONObject 本身
谢谢你的帮助
你不能仅仅因为继承不是双向的JSONObject
投射到JSONSite
,这意味着JSONObject
不能变得JSONSite
,因为它可能缺少所需的功能(自然JSONSite
可以强制转换为其父级,因为它具有JSONObject
的所有功能(。