Еще один пример нарушения совместимости java.sql:
В версии 1.5 метод сравнения (Дата) был добавлен в java.sql.Timestamp. Этот метод генерировал бы исключение ClassCastException, если предоставленная Date не была экземпляром java.sql.Timestamp. Конечно, java.sql.Timestamp расширяет Date, а у Date уже был метод compareTo (Date), который работал со всеми датами, поэтому это означало, что код, сравнивающий метку времени с датой (не являющейся меткой времени), прервался бы во время выполнения в 1.5 .
Интересно отметить, что, похоже, 1.6 исправил эту проблему. Хотя документация для java.sql.Timestamp.compareTo (Date) по-прежнему гласит «Если аргумент не является объектом Timestamp
, этот метод выдает объект ClassCastException
», фактическая реализация говорит об обратном. Я предполагаю, что это ошибка документации.