Я подозреваю, что проблема возникает, когда не поддерживается ни значение . Это вернет 1, как вы это называете, то есть
x1.compare(x2) == 1
x2.compare(x1) == 1
Это неверно.
Я предлагаю вам изменить это:
object1.getSponsored() && object2.getSponsored()
до
object1.getSponsored() == object2.getSponsored()
в обоих местах. Я, вероятно, на самом деле извлекаю метод где-то с такой сигнатурой:
public static int compare(boolean x, boolean y)
и затем назовите это так:
public int compare(SRE object1, SRE object2) {
return BooleanHelper.compare(object1.getSponsored(), object2.getSponsored());
}
Это сделает код более понятным, ИМО.