История изменений
Исправление
vertexua,
(текущая версия)
:
Во времени нету единственного понятия что такое равенство без дополнительного контектста. Будет вполне два случая, в котором программист хочет чтобы две переменные времени с разными таймзонами указывающими на один момент глобального времени были равны, а другой программист, хочет чтобы не равны.
И тут еще на помощь приходит Java, в которой операция equals - метод Object и реализовывается один раз при реализации самого класса. Это не какая-то группа Scala/Rust трейтов, которые можно присобачить потом для всех немыслимых конкретных типов. Потому все что предусмотрели - то может быть equals, что нет, то false.
Как правило другие классы - false. Вот почему.
Оно симметрично должно быть. Сделал equals для другого класса. Пойди в тот класс и сделай equals для этого.
И еще должно быть транзитивно. Сделал equals для А на Б, то кроме того что Б на А надо реализовать, так еще если есть Б на В, то надо и В на Б и В на А. Короче в каждом классе нужно реализовать или немыслимый комбинаторный набор всех возможных пар. Или сделать приведение всех классов к общему и его сравнивать. Даже если ты не хочешь создавать на каждом equals новый обьект - должен.
Чтобы не заниматься этой гимнастикой, equals сделан только между экземплярами одного и того же самого класса. Если программисту нужно, пусть сам приведет к общему.
Так вот, я к чему. Ты истеричка и тут не в двух датах проблема, а надо или из всей Java сделать не Java, а новый язык, или просто успокоиться и не нервничать. Еще можешь не писать на Java
Исходная версия
vertexua,
:
Во времени нету единственного понятия что такое равенство без дополнительного контектста. Будет вполне два случая, в котором программист хочет чтобы две переменные времени с разными таймзонами указывающими на один момент глобального времени были равны, а другой программист, хочет чтобы не равны.
И тут еще на помощь приходит Java, в которой операция equals - метод Object и реализовывается один раз при реализации самого класса. Это не какая-то группа Scala/Rust трейтов, которые можно присобачить потом для всех немыслимых конкретных типов. Потому все что предусмотрели - то может быть equals, что нет, то false.
Как правило другие классы - false. Вот почему.
Оно симметрично должно быть. Сделал equals для другого класса. Пойди в тот класс и сделай equals для этого.
И еще должно быть транзитивно. Сделал equals для А на Б, то кроме того что Б на А надо реализовать, так еще если есть Б на В, то надо и В на Б и В на А. Короче в каждом классе нужно реализовать или немыслимый комбинаторный набор всех возможных пар. Или сделать приведение всех классов к общему и его сравнивать. Даже если ты не хочешь создавать на каждом equals новый обьект - должен.
Так вот, я к чему. Ты истеричка и тут не в двух датах проблема, а надо или из всей Java сделать не Java, а новый язык, или просто успокоиться и не нервничать. Еще можешь не писать на Java