gpt4 book ai didi

java - 使用 Java 中的引用来创建副作用

转载 作者:行者123 更新时间:2023-12-01 22:03:26 31 4
gpt4 key购买 nike

我习惯于使用明确允许您使用引用/指针的语言,我尝试做的事情依赖于此。

如果我有一个 Foo 类的对象我有三个 Bar 类的对象。 我如何拥有 Bar 类的所有三个对象引用 Foo 的一个实例?

(我依赖副作用)

如果这在Java中是可能的(我相信这会给你一份引用的副本,但我读过相互矛盾的信息,现在仍然有点困惑)

最佳答案

If this is possible in Java at all (which I believe gives you a copy of a reference, but I've read conflicting information and now remain a little confused)

也许您习惯使用 C 等语言,它们将内存视为一个巨大的数组,并使用指向数据结构的指针(以及指向指针的指针)。 Java 与 C 的不同之处在于使用引用(而不是指针)和对象(而不是结构)。

Java 中指针的模拟是引用变量,它存储对对象的引用。引用变量的值是一个指针,但在 Java 中,您永远不会使用指针值本身,而只能使用它所引用的对象。

如果您有这样定义的类:

public class Bar {
private Foo fooRef;

public Bar(Foo foo) {
this.fooRef = foo;
}

:
:
}

请注意,Bar 被定义为具有可变实例字段 fooRef,它将保存对 Foo 类型的对象的引用。

下面将实例化 Bar 的三个实例,每个实例都引用相同的 Foo 对象:

Foo myFoo = new Foo();

Bar bar1 = new Bar(myFoo);
Bar bar2 = new Bar(myFoo);
Bar bar3 = new Bar(myFoo);

由于实例字段 fooRef 是可变的,因此包含该字段的对象可以通过任何有权访问该字段的方法进行更改。这会产生您正在寻找的副作用(尽管可变字段在并发编程中是一个特别值得关注的问题)。

关于java - 使用 Java 中的引用来创建副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33291472/

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