gpt4 book ai didi

java - 在两个调试 session 之间保留对象 ID

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

我正在使用 eclipse 调试器调试 java 应用程序。

我想知道调试器向我显示的对象 ID(另请参阅 Java object ID in jvm )。

是否可以使两个调试 session 之间的这些 id 相同?那么,当我调试同一个应用程序两次(一个接一个)时,相同的对象具有相同的 id 吗?或者是否可以像这样设置断点:当涉及给定 id 的对象时,在任何语句处中断?

我想到了一个不涉及某行代码的断点定义。我想到了一个独立于代码行的断点。只涉及id的断点。调试器手头有一个像这些 id 这样的工具:他不能用它来为我提供我建议的功能吗?

最佳答案

这是不可能的。 id 是调试器内部的,每次创建对象(或从序列化等恢复)时随机生成。此外,您不应该尝试以这种方式滥用该属性(property)。

幸运的是,Java 有一些可能会满足您需求的东西:Object#hashCode 。它是每个唯一对象的(半)唯一标识符(就 Object#equals 而言)。因此,只要数据相同,它就可以用于在整个调试 session 中一致地识别对象。

Eclipse可以根据所有类成员变量为您生成一个hashCode()。我建议使用它,因为它可能会满足您的需求并保证哈希具有所有所需的属性。它位于右键单击->源->生成 hashCode() 和 equals()

就断点而言,只需创建一个 if 检查正确的对象并在其中放置断点即可。

关于java - 在两个调试 session 之间保留对象 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820570/

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