пятница, 22 апреля 2011 г.

с. 250 (Черновик) Сравнение экземпляров класса и подкласса

"Если вызов y.compareTo(x) возбуждает исключительную ситуацию, то и вызов x.compareTo(y) также должен возбуждать её."
Или, перефразируя, если вызов y.compareTo(x) НЕ возбуждает исключительную ситуацию, то и вызов x.compareTo(y) также НЕ должен возбуждать её.

Вопрос: В чём состоит существенная разница реализации метода сравнения двух объектов, находящихся в одной цепочке наследования, в родительском и дочернем классах?
Ответ: В дочернем классе необходимо реализовывать полную проверку объектов, т.е. с учётом всех родительских классов, для предотвращения возникновения исключительных ситуаций.

1 комментарий:

  1. Вроде из исходных положений никак не следует необходимость предотвращения возникновения исключительных ситуаций.
    Следует всего лишь гарантировать что если a.compareTo(b) throws an exception <=> b.compareTo(a) throws an exception

    ОтветитьУдалить