Paar Dinge:
Zunächst einmal sollten Sie immer if
Aussagen in { }
geschweiften Klammern wickeln.
Object part = json.get(0);
File saveTo = new File(dataPath("test.txt"));
if (part.getClass() == JSONObject.class){
((JSONObject)part).save(saveTo, "");
}
if (part.getClass() == JSONArray.class){
((JSONArray)part).save(saveTo, "");
}
Zweitens, wenn Sie nur eine dieser if
Aussagen erwarten auszuführen, dann sollten Sie vielleicht ein else if
verwenden:
Object part = json.get(0);
File saveTo = new File(dataPath("test.txt"));
if (part.getClass() == JSONObject.class){
((JSONObject)part).save(saveTo, "");
}
else if (part.getClass() == JSONArray.class){
((JSONArray)part).save(saveTo, "");
}
Drittens Sie die instanceof
Operator, anstatt sich die Klasse verwenden:
Object part = json.get(0);
File saveTo = new File(dataPath("test.txt"));
if (part instanceof JSONObject){
((JSONObject)part).save(saveTo, "");
}
else if (part instanceof JSONArray){
((JSONArray)part).save(saveTo, "");
}
Aber um Ihre Frage zu beantworten, ist es nicht eine gute Möglichkeit, diesen Code zu minimieren, weil JSONObject
und JSONArray
sind beide direkte Unterklassen von Object
. Es wäre einfacher, wenn beispielsweise JSONArray
eine Unterklasse von JSONObject
wäre, aber das ist es nicht.
Aber wenn Sie sich selbst zu schreiben diesen Code an mehreren Stellen finden, sollten Sie es in eine Funktion, wie diese extrahieren:
void saveJsonThing(Object part, File file)
if (part instanceof JSONObject){
((JSONObject)part).save(saveTo, "");
}
else if (part instanceof JSONArray){
((JSONArray)part).save(saveTo, "");
}
else{
//handle error?
}
}
Dann Code, kann nur diese Funktion aufrufen, wenn es etwas retten muss:
Object part = json.get(0);
File saveTo = new File(dataPath("test.txt"));
saveJsonThing(part, saveTo);
Warum brauchen Sie die Besetzung? ['toString'] (https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()) ist eine Methode von' Object' – UnholySheep
Schreiben Sie den Code einmal für eine Vorfahre aller Klassen, die die betreffende Methode haben. – Aziuth
@UnholySheep Nun, das war ein schlechtes Beispiel. Daran habe ich nicht gedacht. – dzaima