Я пытался выяснить, как CompareToBuilder работает сам, и я наткнулся на этот пост, но я не был доволен ответом. Например, метод toComparison должен возвращать отрицательное целое число, положительное целое число или ноль, поскольку разработчик определил, что «левая» сторона меньше, больше или равна «правой» стороне.
Поэтому мой вопрос был о том, как порядок добавления атрибутов влияет на сравнение. Чтобы ответить на это, единственное, что я мог сделать, это проверить исходный код, и я нашел это:
public CompareToBuilder append(int lhs, int rhs) {
if (this.comparison != 0) {
return this;
}
this.comparison = ((lhs > rhs) ? 1 : (lhs < rhs) ? -1 : 0);
return this;
}
Итак, в основном происходит сравнение атрибутов на основе порядка их добавления. В вашем примере кода сначала будет оцениваться «сотрудник». Если атрибуты левой стороны оцениваются как меньшие или большие, чем правая часть, итоговое значение не учитывается.
Атрибут «total» будет оцениваться только в том случае, если «employee» оценивается как равный.