У вас может быть два варианта equals
- переопределение Object.equals
и одно, которое лучше подходит для рекурсии. Рекурсивная проверка равенства принимает A или B - в зависимости от того, какой класс другого этого объекта - это объект, который вы называете рекурсивным равенством от имени. Если вы вызываете его от имени this.equals
, вы проходите в null
. Например:
A {
...
@Override
public boolean equals(Object obj) {
// check for this, null, instanceof...
A other = (A) obj;
return recursiveEquality(other, null);
}
// package-private, optionally-recursive equality
boolean recursiveEquality(A other, B onBehalfOf) {
if (onBehalfOf != null) {
assert b != onBehalfOf;
// we got here from within a B.equals(..) call, so we just need
// to check that our B is the same as the one that called us.
}
// At this point, we got called from A.equals(Object). So,
// need to recurse.
else if (b == null) {
if (other.b != null)
return false;
}
// B has a similar structure. Call its recursive-aware equality,
// passing in this for the onBehalfOf
else if (!b.recursiveEquality(other.b, this))
return false;
// check bkey and return
}
}
Итак, после A.equals
:
A.equals
вызывает `recursiveEquality (otherA, null), если this.b != null
, мы закончили третий блок if-else, который вызывает b.recursiveEquality(other.b, this)
в B.recursiveEquality
, мы попали в блок first if-else, который просто утверждает, что наш A
является тем же, который был передан нам (т. е. что круговая ссылка не нарушена), мы заканчиваем B.recursiveEquality
, проверяя aKey
(в зависимости от ваших инвариантов вы можете утверждать что-то, основанное на том, что произошло на шаге 3). B.recursiveEquality
возвращает A.recursiveEquality
, проверяя bKey
, возможно, с аналогичными утверждениями A.equals
возвращает результат проверки рекурсивного равенства nevermind я нашел ответ:
-p POST регистрирует файл, содержащий данные, которые программа отправит на сервер Apache в любых запросах POST HTTP. Содержание файла должно быть похожим name=value& something=other, с закодированным URL специальных символов.