Цитата из http://sites.google.com/site/gson/gson-design-document:
Почему большинство классов в Gson помечены как Окончательный?
Пока Gson предоставляет довольно расширяемой архитектуры путем предоставления подключаемые сериализаторы и десериализаторы, классы Gson не были специально разработанный для расширяемой. Предоставление нефинальных классы позволили бы пользователю законно расширять классы Gson и то ожидайте, что поведение будет работать в все последующие изменения. Мы решили ограничивать такие прецеденты путем маркировки классы как окончательные, и появляется хороший прецедент, позволяющий расширяемость. Пометить окончательный класс также имеет небольшую выгоду от предоставления дополнительные возможности оптимизации для компилятора Java и виртуальной машины.
Почему это так? [Если бы я догадался: из JVM известно, что класс является окончательным, он не поддерживает таблицы переопределения методов? Есть ли другие причины?]
В чем преимущество производительности?
Это относится к классам, которые являются частотными экземплярами (POJO?) или, возможно, классу, которые являются хранителями статических методов (классы полезности)?
Могут ли методы, определенные как окончательные, теоретически повысить производительность?
Есть ли какие-либо последствия?
Спасибо, Максим.