in " Руководство для программистов по сертификации Java SCJP " Я нашел пример, которому не могу следовать.
Это данное перечисление:
enum Scale3 {
GOOD(Grade.C), BETTER(Grade.B), BEST(Grade.A);
enum Grade {A, B, C}
private Grade grade;
Scale3(Grade grade) {
this.grade = grade;
}
public Grade getGrade() { return grade; }
}
Это заданное выражение:
Scale3.GOOD.getGrade().compareTo(Scale3.Grade.A) > 0;
Я не понимаю, почему это выражение будет правдой?
Возвращаемое значение будет 2.
compareTo () вернет значение> 0, если данный объект «меньше» объекта.
Scale3.Grade.A является «самым большим» элементом рангов, его порядковый номер равен 0.
Scale3.GOOD является «самым большим» элементом Scale3, его порядковый номер также равен 0.
Конструктор Scale3 вызывается с Scale3.Grade.C , порядковый номер которого равен 2.
Таким образом, данное выражение равно следующему коду:
Scale3.Grade.C.compareTo(Scale3.Grade.A) > 0;
A «больше», чем C , поэтому результат не должен быть <0? </p>