我正在處理奇怪的javax.json
庫。因此,這裏的問題:javax.json對象具有相同的方法,但它們不是通用接口的實現。如何投射?
我需要投JsonValue
類型的Object
要麼JsonObject
或JsonArray
這樣我就可以調用的方法getJsonObject
和它getJsonArray
。 JsonArray
和JsonObject
都具有相同的功能相同的方法名稱,但它們不是實現的方法,它們是在它們中的每一個上定義的方法!參見:JsonObject,JsonArray。
明顯的解決辦法是驗證類型,然後根據驗證的類型轉換,就像這樣:
if (current.getValueType().equals(JsonValue.ValueType.OBJECT)) {
current = ((JsonObject) current).getJsonObject(node);
} else if (current.getValueType().equals(JsonValue.ValueType.ARRAY)) {
current = ((JsonArray) current).getJsonObject(node);
}
,但它會要求我的代碼太多的重複。所以我問:
1)如果JsonObject
和JsonArray
都有相同的方法,爲什麼他們不是一些接口的實現?
2)是否有一種更優雅的方式,通過使用一些技巧來同時將對象投射到JsonObject
或JsonArray
?你知道有什麼方法可以改善這種狀況嗎?