问题标签 [object-identity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7683 浏览

ruby - 在 Ruby 中,为什么 inspect() 打印出某种与 object_id() 不同的对象 id?

p函数用于打印一个对象时,它可能会给出一个ID,它与object_id()给出的不同。数字不同的原因是什么?

更新: 0x4684abc与 不同36971870,即0x234255E

0 投票
2 回答
350 浏览

python - Python中的字符串连接

您能否描述两种字符串连接方式之间的区别:简单__add__运算符和%s模式?我对这个问题进行了一些调查,发现%s(不使用括号的形式)要快一些。

还出现了另一个问题:为什么 result of'hell%s' % 'o'指的是另一个内存区域而不是'hell%s' % ('o',)

有一些代码示例:

结果:

PS我知道字符串实习:)

0 投票
6 回答
516 浏览

java - 关于Java中JTextField的一个问题

我在运行我编写的 Java 类时遇到了一个小问题,尽管设计非常简单。我创建了一个 JPanel,并在其上添加了四个 JTextField,并且我还为这个 JPanel 附加了一个按钮。然后,我将一个 ActionListener 关联到这个被按下的按钮。代码如下:

奇怪的是,当我按下 OK 按钮后,我确实在这四个 JTextField 中输入了文本,它仍然会落在 IF 分支中,就好像我没有在这四个字段中的任何一个中输入任何文本一样。我已经调试了一段时间,但没有任何线索。谁能给我一些提示,例如 .getText() == "" 是否是测试无输入的有效方法?

提前致谢!

0 投票
2 回答
658 浏览

.net - 为什么 ASP.NET 视图状态会丢失序列化对象的标识?

简短的问题:当我将一个对象的同一个实例放入视图状态两次时,在反序列化时有两个实例。我希望只有一个实例。这可以做到吗?怎么做?

啰嗦的解释:

考虑以下代码:

当它运行并启动回发时,我收到消息“false”。也就是说,虽然我在视图状态中放置了一个对象,但它被序列化了两次。这可以通过检查视图状态内容来验证。

如果我尝试将交叉引用对象放在视图状态中,那么每个项目都会被序列化为单独的图形。为了显示:

现在我收到消息“False”和“True”(按此顺序)。同样,检查 Viewstate 显示,每个对象都被序列化了两次。是什么赋予了?我检查了System.Web.UI.StateBagILSpy 的来源,但它只是将所有值推入一个ArrayList,并且也没有特殊的序列化代码。因此,无论是谁序列化视图状态(System.Web.UI.ObjectStateFormatter?),都会以某种方式将每个对象序列化为一个单独的图......为什么?我可以解决它吗?

更新:我需要这个的原因是同一个对象将由两个单独的组件持久化,并且在反序列化时我想检查它们是否具有相同的对象。(或者更确切地说,它们本身都存储对象集合,我需要同步这些集合)。

我可以用十几种不同的方式实现自定义比较,但是由于我想对任意对象执行此操作,所以有点棘手。;)

0 投票
3 回答
3884 浏览

java - 我可以使用 == 运算符来比较 Java 中的 Point 对象吗?

当我正在解决“破解编码面试”一书中的问题时......我有一个疑问。问题是:

给定二维平面上的两个正方形,找到一条将这两个正方形切成两半的线。

解决方案:任何穿过矩形中心的线都必须将其切成两半。因此,如果你画一条连接两个正方形中心的线,它将把两个正方形切成两半。

但现在的疑问是 cut 方法中的 '==' 运算符来检查它们是否是同一个正方形的点。点是不可变的吗??请帮助我...在此先感谢。

0 投票
3 回答
2474 浏览

java - 如果 Java 的垃圾收集器移动对象,Object.hashCode 和 System.identityHashCode 是什么?

我经常听说这些方法 (Object.hashCodeSystem.identityHashCode) 返回对象的地址,或者从地址快速计算出来的东西;但我也很确定垃圾收集器会移动和压缩对象。由于哈希码不能改变,这就带来了一个问题。我知道这不是日常工作需要知道的事情,但我想了解内部情况。那么,有谁知道这是如何在 Java 中实现的?或 .NET,因为它们可能相似。

0 投票
1 回答
5925 浏览

java - Morphia 保存新实体而不是更新 _id

对不起,非常愚蠢的问题。我正在使用 Morphia 1.00。有一些实体:

以及其他一些字段,setter 和 getter。尝试保存相同的实例:

据我所知,mongoDb 必须执行 upsert 命令(意思是“如果存在则更新;如果缺少则插入(单个文档)”)。但是,mongo 不仅仅是更新 _id 字段,而是将新实体保存在数据库中。

0 投票
2 回答
187 浏览

c# - 请解释此代码中用于测试对象平等和身份的技术

请解释此代码中用于测试对象平等和身份的技术。

更好的是,如果您可以为我提供任何网络链接/书籍参考以进行详细讨论。

什么是瞬态对象?

0 投票
2 回答
8902 浏览

python - 如何使用等效对象访问集合中的元素?

如果我有一个与 Python 集合的元素比较相等的对象,但不是同一个对象,是否有合理的方法来获取对集合中对象的引用?用例将使用该集合来识别和共享重复数据。

示例(Python 2.7):

如何获得a使用b和的参考s?我可以想到一种方法,但我不确定它是否不依赖于实现,无论你得到a还是b. 编辑:当 s 有多个元素时,这不起作用;交叉点很自然地实现了类似的东西[x for x in smaller_set if x in larger_set]

也许一个好的解决方法是使用将每个键映射到自身的字典,而不是集合。

0 投票
2 回答
432 浏览

c++ - 实现对象跟踪,如 Boost::Serialization

我正在为 C++ 中的对象图实现“克隆”功能,部分问题是确保如果有两个指向同一个对象的指针,它不会被克隆两次。我通过保留 amap<void*, void*>来做到这一点,它将原始对象作为键,将克隆版本作为值。克隆对象时,我使用模板函数检查对象是否在地图中 - 如果是,我将其返回为static_cast<T*>,否则,我克隆它并将原始和克隆存储在地图中,并隐式转换为void*.

这种方案的问题在于,如果一个对象在两个地方被不同的类型(例如,通过接口与具体类型)引用,则强制转换void*可能不会产生相同的值。这意味着该对象被克隆了两次。

我在网上寻找现有的解决方案,并意识到 Boost.Serialization 必须处理同样的问题。但是在浏览了它的源代码之后,我找不到实际跟踪对象指针的部分。

任何人都可以通过建议可行的设计或指出 Boost 代码中执行此操作的部分来提供帮助吗?