gpt4 book ai didi

java - 如何在 Java 中通过引用传递可变参数

转载 作者:行者123 更新时间:2023-12-01 07:27:46 25 4
gpt4 key购买 nike

我正在编写一个方法,该方法接收任意数量的参数并返回修改后的参数。我尝试过使用 varargs 但它不起作用,在这里您可以看到代码的简化版本:

public static void main(String[] args) {
String hello = "hello";
String world = "world";

addPrefix(hello, world);

System.out.println("hello: " + hello + " world: " + world);
}

public static void addPrefix(String... elements) {
for (int i = 0; i < elements.length; i++) {
elements[i] = "prefix_" + elements[i];
}

for (int i = 0; i < elements.length; i++) {
System.out.println(elements[i]);
}
}

打印结果:

prefix_hello    
prefix_world
hello: hello world: world

如您所见,方法内部的值被正确修改,但原始变量没有改变。

我看过很多页面,例如 herehere但 Java 似乎将变量的值复制到 Object[],因此引用丢失了。

知道我该怎么做吗?

最佳答案

Java 是 pass by value 。你无法实现你的愿望。相反,您可以从 addPrefix() 函数返回修改后的数组。

public static void main(String args[]) {

String hello = "hello";
String world = "world";

String[] elements = addPrefix(hello, world);

for (int i = 0; i < elements.length; i++) {
System.out.println(elements[i]);
}




}

public static String[] addPrefix(String... elements) {
for (int i = 0; i < elements.length; i++) {
elements[i] = "prefix_" + elements[i];
}

for (int i = 0; i < elements.length; i++) {
System.out.println(elements[i]);
}

return elements;
}

和输出

prefix_hello
prefix_world
prefix_hello
prefix_world

关于java - 如何在 Java 中通过引用传递可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476263/

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