"Если вызов y.compareTo(x) возбуждает исключительную ситуацию, то и вызов x.compareTo(y) также должен возбуждать её."
Или, перефразируя, если вызов y.compareTo(x) НЕ возбуждает исключительную ситуацию, то и вызов x.compareTo(y) также НЕ должен возбуждать её.
Вопрос: В чём состоит существенная разница реализации метода сравнения двух объектов, находящихся в одной цепочке наследования, в родительском и дочернем классах?
Ответ: В дочернем классе необходимо реализовывать полную проверку объектов, т.е. с учётом всех родительских классов, для предотвращения возникновения исключительных ситуаций.
Или, перефразируя, если вызов y.compareTo(x) НЕ возбуждает исключительную ситуацию, то и вызов x.compareTo(y) также НЕ должен возбуждать её.
Вопрос: В чём состоит существенная разница реализации метода сравнения двух объектов, находящихся в одной цепочке наследования, в родительском и дочернем классах?
Ответ: В дочернем классе необходимо реализовывать полную проверку объектов, т.е. с учётом всех родительских классов, для предотвращения возникновения исключительных ситуаций.
Вроде из исходных положений никак не следует необходимость предотвращения возникновения исключительных ситуаций.
ОтветитьУдалитьСледует всего лишь гарантировать что если a.compareTo(b) throws an exception <=> b.compareTo(a) throws an exception