почему делают все рекомендации требуют, чтобы класс был окончательным? если Вы используете отражение для проверки класса каждого объекта, и можно решить программно, что тот класс неизменен (неизменные, заключительные поля), то Вы не должны требовать, чтобы сам класс был окончательным.