Здравствуйте, salvequick, Вы писали:
S>Было бы достаточно если нельзя было бы создать эти классы обычными способами.
Ну в качестве странноватой, но вроде рабочей идеи — в конструкторе можно проверять стектрейс и убеждаться, что класс создаётся из вашего кода, а не из чужого.
Ещё одна странноватая идея — объявить класс abstract. Тогда его инстанцировать не получится. В другом пакете объявить уже package-private наследника и инстанцировать. Клиент, конечно, сможет сделать то же самое, но это уже как бы лишние действия, случайно такое не сделать.