通过继承创建一种新型的 JSONObject



我正在尝试创建一个特定类型的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的所有功能(。

相关内容

最新更新