gpt4 book ai didi

grails - Groovy:两个变量是否指向同一个对象?

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

我正在调试网站的某些Groovy代码,并且遇到了一个问题,即我在流的一部分中的 Controller 中创建了object A并在其中设置了变量(将其读回并正确显示)。

然后,我在不同的 Controller 中拾取对同一对象的理解。但是不再设置该变量。

我以为第一个 Controller 中的object A与第二个 Controller 中拾取的object A是相同的假设是错误的,或者某些东西在途中修改了值。

因此,这可能是一个非常基本的问题(我感到非常恐怖,因为这表明我对Groovy / Java的工作原理存在一些根本性的误解-请保持谦虚):
如何判断object A中的controller 1是否与 Controller 2中的object A相同(相同的意思是指向同一对象,而不是等同的)。

最佳答案

I then pick up what I had understood to the the same object in a different controller.



如果显示一个示例,说明您在第一个 Controller 中正在执行的操作以及在第二个 Controller 中正在执行的操作,这将有助于弄清正在发生的情况。目前尚不清楚您在上面引用的句子中“拾取”的含义。

如果您可以同时整理两个引用,则可以调用 o1.is(o2),它将告诉您 o1是否指向与 o2相同的对象。可以用来帮助调试情况的方法是,在第一个 Controller 中,您可以调用 System.identityHashCode(o1),在第二个 Controller 中,您可以调用 System.identityHashCode(o2),看看它们是否返回相同的值。

在Web应用程序中,有时相同对象的概念可能会含糊不清。例如,如果您有2个单独的代理,但是它们代理同一实例,则在某些上下文中,您会将它们视为同一对象。另一个示例是,如果您要处理持久性实体,则内存中可能有2个单独的实例,它们实际上对应于数据存储中的同一记录。

无论如何,上面提到的 identityHashCode方法是一种可以用来了解这些对象是否为同一对象的技术。如果这样做不适合您,则可以显示一些代码或提供更多可能有用的详细信息。

关于grails - Groovy:两个变量是否指向同一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955154/

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