Zitiert von http://sites.google.com/site/gson/gson-design-document :
Warum sind die meisten Klassen in Gson als endgültig?
Gson bietet zwar eine ziemlich erweiterbare Architektur bietet, indem es einsteckbare Serialisierer und Deserialisierer bietet, wurden die Gson-Klassen nicht speziell entwickelt, um erweiterbar zu sein. Die Bereitstellung von nicht-finalen Klassen hätte es einem Benutzer ermöglicht Gson-Klassen rechtmäßig zu erweitern, und dann zu erwarten, dass dieses Verhalten in allen nachfolgenden Revisionen funktioniert. Wir haben uns entschieden solche Anwendungsfälle einzuschränken, indem wir die Klassen als endgültig markieren und warten, bis ein ein guter Anwendungsfall auftaucht, um die Erweiterbarkeit. Die Kennzeichnung einer Klasse als final hat auch den kleinen Vorteil, dass es zusätzliche Optimierungsmöglichkeiten für den Java-Compiler und die virtuelle Maschine.
Warum ist dies der Fall? [Wenn ich raten würde: weiß die JVM, dass eine Klasse final ist, und pflegt keine Tabellen mit Methodenüberschreibungen? Gibt es noch andere Gründe?]
Worin besteht der Leistungsvorteil?
Gilt dies für Klassen, die häufig instanziiert werden (POJO?) oder vielleicht für Klassen, die statische Methoden besitzen (Utility-Klassen)?
Können als endgültig definierte Methoden theoretisch auch die Leistung verbessern?
Gibt es irgendwelche Auswirkungen?
Ich danke Ihnen, Maxim.