Мне немного неясно, почему вы захотите хранить около 50 клонов одного и того же объекта, если только они не являются первоначальным трейдером в качестве прототипа (см. Схему) для последующих трейдеров.
Если вы хотите сделать точную копию объекта, вы должны принять во внимание проблему полиморфизма. Если людям, относящимся к подклассам вашего заданного класса, разрешено добавлять члены состояния, то у вас уже достаточно головной боли с такими функциями, как equals и compareTo, что клон является еще одним случаем, когда вам требуется специальная обработка.
Я не согласен с тем, что клон - это всегда зло, иногда это необходимо. Однако в ситуациях с подклассами многие вещи становятся сложными.
Я бы порекомендовал вам прочитать (когда у вас есть возможность) «Эффективную Java» Блоха, которая охватывает многие его темы. Браха считает, что не стоит позволять другим продлевать ваши уроки, и что если вы это сделаете, вам нужно очень хорошо задокументировать, что им нужно делать, и надеяться, что они будут следовать вашим инструкциям. Там действительно нет способа обойти это. Вы также можете сделать своих трейдеров неизменными.
Идите к реализации «Клон» в обычном режиме и очень четко укажите в заголовке класса, что любой, унаследованный от вашего трейдера и добавляющий членов состояния, должен реализовать методы X (укажите, какие).
Поиск трюков, чтобы обойти фактическое Клонирование, и все же Клон не сможет преодолеть проблему наследования. Здесь нет серебряной пули.