2
我正在使用JDK 1.8.0_101並將javax.json.jar添加到類路徑中。下面的編譯很好,但會引發錯誤。它看起來像刪除()方法尚未實施。從javax.json.JsonObject中刪除鍵值對
public class Test{
public static void main(String[] args) {
javax.json.JsonObject o = javax.json.Json.createObjectBuilder().add("a", 1).add("b", 2).build();
try {
o.remove("a");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
這是輸出:
java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1.remove(Collections.java:1664)
at java.util.AbstractMap.remove(AbstractMap.java:254)
at Test.main(Test.java:5)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
我怎樣才能解決,否則我什麼時候能實施這種方法嗎?我使用舊版本的javax.json庫嗎?
你爲什麼要刪除一個對象的屬性時,你可以忽略它? – Kadima
該對象必須發送到另一個應用程序,並且不必具有該信息。 – fabiog
因爲JsonObject顯然[記錄](http://docs.oracle.com/javaee/7/api/index.html?javax/json/JsonObject.html)是不可變的,所以不能指望這種情況發生。 javadoc甚至說:*此映射對象提供對JSON對象數據的只讀訪問權限,並試圖修改映射,無論是直接映射還是通過其集合視圖,都會導致UnsupportedOperationException。* –