gpt4 book ai didi

java - 该参数在方法内部如何变化

转载 作者:行者123 更新时间:2023-11-30 07:36:15 31 4
gpt4 key购买 nike

我知道 Java 方法总是按值传递,但我发现这段代码表明,当您将 JSONObject 传递到此方法并在方法内修改该对象时,当该方法返回时,它保持修改状态

该方法用于替换json对象的某些值,并且工作正常。

有人能解释一下当 Java 按值传递时这是如何发生的吗?

public static void setProperty(JSONObject js1, String keys, String valueNew) throws JSONException {
String[] keyMain = keys.split("\\.");
for (String keym : keyMain) {
Iterator iterator = js1.keys();
String key = null;
while (iterator.hasNext()) {
key = (String) iterator.next();
if ((js1.optJSONArray(key) == null) && (js1.optJSONObject(key) == null)) {
if ((key.equals(keym))) {
js1.put(key, valueNew);
return;
}
}
if (js1.optJSONObject(key) != null) {
if ((key.equals(keym))) {
js1 = js1.getJSONObject(key);
break;
}
}
}
}
return;
}

这就是你可以这样调用它

public static void main(String[] args) throws JSONException {
String text="{\"a\": { \"b\": { \"c\": \"x\", \"d\": \"y\" }}}";
JSONObject json = new JSONObject(text);
setProperty(json,"a.b.d","************");
System.out.println(json.toString(4));

}

最佳答案

此方法不会更改引用js1。对象本身是可变的,该方法调用js1的方法来改变其内部状态。

关于java - 该参数在方法内部如何变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356759/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com