Здравствуйте, vsb, Вы писали:
vsb>Ну в качестве странноватой, но вроде рабочей идеи — в конструкторе можно проверять стектрейс и убеждаться, что класс создаётся из вашего кода, а не из чужого.
Вы имеете ввиду вызвать Thread.currentThread().getStackTrace() и смотреть что последний элемент в стектрейсе принадлежит какму то из моих пакетов?
( т.е внутреннее создание )
Думаю что вариант с абстрактным классом мне больше подойдет, но любопытства ради хотелось бы понять.
vsb>Ещё одна странноватая идея — объявить класс abstract. Тогда его инстанцировать не получится. В другом пакете объявить уже package-private наследника и инстанцировать. Клиент, конечно, сможет сделать то же самое, но это уже как бы лишние действия, случайно такое не сделать.
Вот это кстати возможно рабочая идея для меня!
Вы правы пользователь сможет их создать, но для этого нужно наследоваться и случайно это не сделать!
Спасибо!