- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 EMF 对许多不同类型的对象进行建模,现在我想要遍历任何类型对象的 EList,并想知道此 EList 是否包含一个对象,该对象的所有字段的值都相同我感兴趣(在 equals 方法中定义)。问题是我想使用我为我的对象重载的 equals 方法,而不是 ==-Operator ,它仅在是同一个对象时返回 true ,但在我的情况下,我创建了一个新对象设置字段,现在我想知 Prop 有相同字段的对象是否已在列表中。我还没有弄清楚 EMF 中是否有任何设置可以更改 ELIst 的行为,但目前我找到了以下代码,似乎每次我使用该方法 contains 时,它只将对象与 = 进行比较=-运算符,因为 EObjectList 重载了始终返回 false 的 useEquals 方法。
public class BasicEList<E> extends AbstractEList<E> {
/**
* Returns whether the list contains the object.
* This implementation uses either <code>equals</code> or <code>"=="</code> depending on {@link #useEquals useEquals}.
* @param object the object in question.
* @return whether the list contains the object.
* @see #useEquals
*/
@Override
public boolean contains(Object object)
{
if (useEquals() && object != null)
{
for (int i = 0; i < size; ++i)
{
if (object.equals(data[i]))
{
return true;
}
}
}
else
{
for (int i = 0; i < size; ++i)
{
if (data[i] == object)
{
return true;
}
}
}
return false;
}
}
public class EObjectEList<E> extends EcoreEList<E> {
--> Output skipped
@Override
protected boolean useEquals()
{
return false;
}
}
所以我的问题是,是否有人知道我是否可以更改 EList 的行为,或者我是否必须编写自己的实用程序类来执行匹配?
最佳答案
如果还不算太晚,这里是我使用简单的面向对象技巧的提示(供引用):
当您使用 getter 方法时,例如:
yourObject.getYourReference();
你会得到类似的东西:
public EList<YourReference> getYourReference() {
if (reference == null) {
reference = new EObjectResolvingEList<YourReference>(YourReference.class, this,
YourPackage.YOUR_OBJECT_REFERENCE);
}
return reference ;
}
只需重写方法 useEquals()
并标记 getter 尚未生成:
/**
* generated NOT
*/
public EList<YourReference> getYourReference() {
if (reference == null) {
reference = new EObjectResolvingEList<YourReference>(YourReference.class, this,
YourPackage.YOUR_OBJECT_REFERENCE) {
@Override
protected boolean useEquals() {
return true;
}
};
}
return reference;
}
但是,您必须检查这个新行为是否有任何副作用!
关于java - EList (EMF) 的更改行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26400130/
我正在使用 EMF 对许多不同类型的对象进行建模,现在我想要遍历任何类型对象的 EList,并想知道此 EList 是否包含一个对象,该对象的所有字段的值都相同我感兴趣(在 equals 方法中定义)
我仍然是 EMF 的新手,所以也许我的问题没有真正意义,或者我假设了错误的事情。 我正在从事一个模型驱动的项目,因此我定义了一个 ecore 元模型并生成了关联代码。现在我正在尝试进行单元测试,我需要
这是我的第一个 SO 问题。我希望我能提供足够的细节。 我有一个 EMF 模型,它有一个名为 ScopeContainer 的类,它有两个包含引用 EList不同类型的 s。 我已经生成了 模特 mo
我是一名优秀的程序员,十分优秀!