gpt4 book ai didi

java - 更改java中变量引用的值

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

我不确定这个标题是否最好,但我想要做的可以在这个例子中说明

class TestClass {
public String foo = "foo"

public void makeFooBar() {
String bar = foo;
bar = "bar";

System.out.println(foo); //should print "bar"
}

}

这显然是一个人为的例子,但它说明了这一点。我想通过更改引用 foo 的 bar 的值来更改 foo 的值。这可能吗?

最佳答案

如果您想在多个位置更新某个值(例如通过使用包装对象),这可能是一种方法。当然,还有更多更奇特的方法来完成类似的事情。

class TestClass {
public Wrapper<String> foo = new Wrapper("foo");

public void makeFooBar() {
Wrapper<String> bar = foo;
bar.set("bar");

System.out.println(foo); //should print "bar"
}

public static class Wrappper<T>
{
T value;

public Wrapper(T value)
{
this.value = value;
}

public T get() { return this.value; }
public void set(T newValue) { this.value = newValue; }
@override
public String toString() { return value.toString(); }
}
}

基本上任何原始类型都不能通过引用传递。尽管从技术上来说 String 不是原始类型,但 java 确实对它有一些特殊的对待。 (阅读内部字符串池会给你一个很好的见解。在这个页面中有一个很好的解释,包括一些视觉示例: http://www.journaldev.com/797/what-is-java-string-pool )

关于java - 更改java中变量引用的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40983474/

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