Da quello che ho letto: il motivo è che non è facile determinare quale metodo verrà effettivamente chiamato in quanto ereditarietà.
Tuttavia, perché Java non ha almeno l'ottimizzazione della ricorsione della coda per i metodi statici e impone il modo corretto di chiamare i metodi statici con il compilatore?
Perché Java non ha alcun supporto per la ricorsione della coda?
Non sono sicuro che ci sia qualche difficoltà qui.
Per quanto riguarda il duplicato suggerito , come spiegato da Jörg W Mittag 1 :
- L'altra domanda sul TCO, questa su TRE. TRE è molto più semplice di TCO.
- Inoltre, l'altra domanda pone quali limiti la JVM impone alle implementazioni del linguaggio che desiderano compilare nella JVM, questa domanda si pone su Java, che è l'unica lingua che non è limitata dalla JVM, poiché le specifiche JVM possono essere modificate da le stesse persone che progettano Java.
- Infine, non vi è nemmeno una limitazione nella JVM su TRE, poiché la JVM ha GOTO intra-metodo, che è tutto ciò che è necessario per TRE
1 Formattazione aggiunta per richiamare i punti realizzati.