I don't want to final ALL methods. Methods which users are likely to have subclassed should remain non-final. But getters and setters for internal variables most likely have not been subclassed. In wicket-core we decided to keep the public API (the contract) as concise and strict as possible and only release it (remove final) for a good reason (use case). By doing so, we had a much higher degree of freedom to make internal changes which we were sure don't break existing code. I still belief it is a good principle and that its worth apply it to code outside wicket-code as well.
Juergen
