当前位置: 首页 > 知识库问答 >
问题:

如何检测对象中的修改?

王波
2023-03-14

假设我有一个项集合,例如列表 ,我需要检查是否有任何项从包装类中被修改,例如,任何项的属性的值通过setter被更改:

List<Item> items = itemsWrapper.getItems(); // itemsWrapper contains a list of items
Item anItem = items.get(index);
item.setProperty(property);
itemsWrapper.hasChanged(); // ??????

或者另一个问题,选择的答案建议使用dirty标记,每次修改属性时都需要升起该标记。然而,我的类实际上会变得更脏,矛盾的是,我需要修改几十个修改Item属性的方法。

有没有其他方法,最好是透明的?

共有1个答案

黄仲渊
2023-03-14

简单地说,让对象私有ad为它创建getter和setter。这样,您就可以获得包装器何时更改列表中的任何内容。

如果您想要检测,当一个新元素放入列表时,您可以创建第三个加法器方法将元素添加到数组中。

 类似资料:
  • 问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。

  • 问题内容: 是否对原始类使用某种字节码修改? 或者,也许Hibernate通过将给定的对象与以前保留的版本进行比较而得到脏状态? 我在使用复杂对象的和方法时遇到问题。我觉得如果对象具有集合成员,则计算哈希码将非常慢,并且循环引用也是一个问题。 如果Hibernate不使用/ 检查脏状态,我想我不应该将/ 用于实体对象(不是值对象),但是我也担心如果相同的运算符()还不够。 因此,问题是: Hibe

  • 我需要检测一个球(椭圆形)和多个块(矩形)之间的碰撞。在游戏中表示块的类块中,我有以下代码来检测碰撞(其简短版本,仅用于演示示例): 碰撞不好,因为椭圆形,但一般来说,我想问是否有东西在java(摇摆)检测碰撞,我的意思是如果矩形没有完全显示在画布上,这意味着球重叠一个块坐标

  • 还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除: var vm = new Vue({ data: { a: 1 } }) // `vm.a` 现在是响应式的 vm.b = 2 // `vm.b` 不是响应式的 对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。但是,可以使用Vue.set(object, key, value)方法向嵌

  • 我想在车牌(城市名称)中实现目标检测。我有一个形象: 我想检测图像是否包含单词“”: 我尝试了使用OpenCV和MATLAB的模板匹配方法,但是在其他图像上测试的结果很差。 有谁能帮我或者给我一个逐步解决的方法吗?我有一个项目来识别车牌,我们可以识别和检测数字,但我需要检测和识别字(它是相同的字与更多的车)

  • 我有一个类包含如下所示同伴对象。 我想在运行时修改同伴对象的属性。我将在这个类中添加数百个属性。所以我要做动态。我使用了这个方法,得到如下错误。