提问人:Vivek Raja 提问时间:12/1/2020 最后编辑:Vivek Raja 更新时间:12/2/2020 访问量:475
在 Java 中,JsonArray 是 pass_by_value 还是 pass_by_reference?
in Java, is JsonArray pass_by_value or pass_by_reference?
问:
在 Java 中,JsonArray 是 pass_by_value 还是 pass_by_reference?
我想为每次迭代设置新的 JsonArray。我可以用不同的逻辑来实现这一点。 但我只是想知道下面的逻辑有什么问题。 根据我的理解,在java中,所有使用new创建的对象都作为引用传递。
JsonArray jarr= new JsonArray();
for(i=0 ; i<5; i++)
{
func1(jarr); // for each call to func1, I need to create new JsonArray.
// after the call returns from func1, jarr is empty.
}
func1(JsonArray obj)
{
obj= new JsonArray();
JsonObject jo_properties = new JsonObject();
jo_properties.addProperty("test_name", "test_value");
obj.add(jo_properties);
// until here I able see all the filled values in obj.
}
答:
0赞
Vivek Raja
12/2/2020
#1
基本上,这是一个在 java 中传递和返回对象的问题。
- JsonArray jarr = 新 JsonArray();-> 这里 jarr 指向 address1
- func1(jarr);-> jarr 的引用传递给 obj
- func1(JsonArray obj) -> with func1(jarr) 调用,现在 obj 也指向 address1
- obj = 新 JsonArray();-> obj 现在指向 address2
- obj 填充了一些值 -> 此处填充了 address2。address1 仍为空。
- 从 Funct1 返回后 -> jarr 将为空,因为它指向 address1,该地址未填充任何值。
溶液
obj= 新 JsonArray();->删除此行,以便 obj 仍将指向 address1。
这样,如果 obj 填充了值,则填充了 address1。 由于 jarr 指向 address1,因此从函数返回后,jarr 不会为空。
有关更多详细信息,请查看 https://www.geeksforgeeks.org/passing-and-returning-objects-in-java/
评论