Похоже, вы сравниваете ссылки, а не данные.
EDIT:
Из документа API для объекта:
«Метод equals для класса Object реализует максимально различающее возможное отношение эквивалентности для объектов; то есть для любых ненулевых ссылочных значений x и y этот метод возвращает true, если и только если x и y ссылаются на один и тот же объект (x = = y имеет значение true). "
например. Если «X» или его родительские классы не переопределяют equals, тогда, когда вы вызываете equals, он будет сравнивать ссылки, которые, если они являются одним и тем же объектом, всегда будут равны.
Судя по звукам, вам необходимо переопределить метод equals в классе 'X', но опять же, что вы говорите, похоже, указывает на то, что они в любом случае являются одной и той же ссылкой?