gpt4 book ai didi

java - 如何将引用从一个对象移动到另一个对象?

转载 作者:行者123 更新时间:2023-12-02 06:35:53 25 4
gpt4 key购买 nike

我正在尝试将对对象的引用从一个对象移动到另一个对象,从而在移动对象时删除该对象的引用并添加对其移动到的对象的引用。

我会尝试用一些假类来尽可能地设置场景: Frog 、所有者、客户:D

所以我有一个拥有 Frog Collection 的所有者,这些 Frog 可以借给客户。客户只能引用一只 Frog 。因此,当 Frog 被借出时,可以在客户类中创建对该 Frog 的引用,并且可以从 Frog 的所有者集合中删除该 Frog 。

我想知道的是如何逆转这个 Action 。当我希望客户归还 Frog 时,我可以将引用 Frog 的客户实例变量设置为空,但随后我不确定如何在不引用 Frog 的情况下将 Frog 返回给所有者,例如:

public void returnFrog()
{
owner.returnFrog(frog);
frog = null;
}

一旦我将实例变量设为 null,返回给所有者的引用也将变为 null。

我能想到的唯一方法是让客户拥有一个包含一只 Frog 的列表,然后简单地从列表中删除 Frog 。这样引用永远不会设置为 null,但是有更好的方法吗?我坚信,如果我只需要一个值,我就不应该使用列表。 :(

或者我无法移动对象,只能跟踪 Frog 是否链接到客户 - 如果是,则它不能链接到任何其他客户(这是我的解决方案 atm)。

希望我没有错过一些基本的东西。

最佳答案

我认为您误解了变量和引用的工作原理。

这一行:

frog = null;

将值null分配给变量frog,我假设它是Customer类的实例变量。 它不会影响任何其他变量!

所以,如果这一行:

owner.returnFrog(frog);

最终将对相关两栖动物的引用存储到 Owner 中的变量中,然后在将 null 分配给 User 中的变量后,该引用仍然存在>.

一个物理比喻就是在纸上写下建筑物的地址。假设你有一张纸,上面写着一个好的理发师的地址,而我有一张空白纸。你告诉我地址​​,我写下来。现在你擦掉你的那张纸。我的纸会变成空白吗?

关于java - 如何将引用从一个对象移动到另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19657983/

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