gpt4 book ai didi

java - Android - 通过引用共享对象

转载 作者:行者123 更新时间:2023-12-02 00:45:49 24 4
gpt4 key购买 nike

大家好,我创建了一个类来扩展应用程序以共享某些变量。然后,在每个 Activity 中,我都使用该类的对象(全局状态),如下所示:

gs = (GlobalState) getApplication();

然后我声明引用共享变量的局部变量,例如:

boolean localStr = gs.str;

现在我的印象是这将传递一个引用,因此对 localStr 的任何更改都将反射(reflect)在全局状态中的 str 中。但事实似乎并非如此。

在此庄园中创建的一些变量(例如对象数组)似乎作为引用传递,因此任何更改都会反射(reflect)在全局状态中,但是对于几乎所有其他变量( boolean 值、字符串和整数),似乎这些更改都没有反射(reflect)出来因此正在被复制而不是被引用。

我做错了什么或者这就是android的工作原理吗,如果是这样我如何通过引用传递?谢谢。

最佳答案

boolean 是一种值类型,Java 不使用引用来存储它。对于所有 Java 基本类型(int、long、...)都是一样的。字符串则不同,它们是引用类型,但如 Johan Sjöberg 所解释的那样是不可变的。

这就是为什么当使用 ArrayList(例如)时,如果您尝试使用像 new ArrayList<boolean>() 这样的值类型,您将会收到错误。 。但是new ArrayList<Boolean>()会起作用,因为 Boolean 是引用类型,而不是值类型。

为了避免出现问题,您应该在任何地方使用引用(使用 gs.str 而不是创建局部变量 localStr)。如果您不太明白我在说什么,我可以更好地解释。

关于java - Android - 通过引用共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050730/

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