Por que a classe String é declarada final em Java?

Desde quando aprendi que a turmajava.lang.String é declarado como final em Java, eu estava me perguntando por que isso? Eu não encontrei nenhuma resposta naquela época, mas este post:Como criar uma réplica da classe String em Java? me lembrou da minha consulta.

Claro, String fornece toda a funcionalidade que eu sempre precisei, e nunca pensei em qualquer operação que exija uma extensão da classe String, mas você nunca saberá o que alguém pode precisar!

Então, alguém sabe qual foi a intenção dos designers quando eles decidiram torná-lo final?

questionAnswers(2)

yourAnswerToTheQuestion