java - 当 EObject 包含无序的 EList 时如何比较它们之间的相等性?

标签 java list equals emf

我仍然是 EMF 的新手,所以也许我的问题没有真正意义,或者我假设了错误的事情。

我正在从事一个模型驱动的项目,因此我定义了一个 ecore 元模型并生成了关联代码。现在我正在尝试进行单元测试,我需要能够测试对象之间的相等性,尤其是扩展 EObject 的对象之间的相等性。

我尝试使用 EcoreUtil.equals() 进行测试,但它总是返回 false,因为我的对象包含列表(EList 类)中的引用,这些引用的排序方式不同。然而,我在我的元模型中明确定义了引用是无序的:我更希望像 Set 而不是 List 那样使用它们。

所以,我最终决定在我生成的 *Impl 类中实现我自己的 equals 方法,即使它在 javadoc 中是不鼓励的,但它有另一种更优雅的方式来测试 EMF 对象之间的结构相等性而不考虑列表的顺序?

谢谢!

最佳答案

您可以实现自己的实用程序类,在其中使用 EObject 默认 equals 方法编写自己的无序列表比较代码。

您可以将您的实现基于 EqualityHelper.equals(List list1, List list2)使用列表“包含”而不是像该方法那样按索引进行。

关于java - 当 EObject 包含无序的 EList 时如何比较它们之间的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12200019/

相关文章:

java - 使用JRadioButton显示图像

java - 以编程方式启用应用程序的市场更新

java - 正则表达式从文本中提取工作经验

java - 如何在列和行中打印正确数量的星号?

java - 通过抽象来强制执行 hashCode 和 equals 是否有任何优势?

c++ - 如何查看一个字符是否等于一个新行

Python - 如何查找多维数组中是否存在某个项目?

mysql:如果数字在列表字段中则选择行(即 userIDs = "1,2,3",从表中选择 *,其中 userIDs 为 1)

python - Kml 创建错误

scala - 类型安全等于宏?