Da quello che ho letto: il motivo è perché non è facile determinare quale metodo verrà effettivamente chiamato come abbiamo ereditato.
Tuttavia, perché Java non dispone almeno dell'ottimizzazione della ricorsione in coda per i metodi statici e impone il modo corretto di richiamare metodi statici con il compilatore?
Perché Java non ha alcun supporto per la ricorsione in coda?
Non sono sicuro che ci sia qualche difficoltà qui.
Riguardo al suggerito duplicato , come spiegato da Jörg W Mittag 1 :
- The other question asks about TCO, this one about TRE. TRE is much simpler than TCO.
- Also, the other question asks about what limitations the JVM imposes on language implementations that wish to compile to the JVM, this question asks about Java, which is the one language that is not restricted by the JVM, since the JVM spec can be changed by the same people who design Java.
- And lastly, there isn't even a restriction in the JVM about TRE, because the JVM does have intra-method GOTO, which is all that's needed for TRE
1 Formattazione aggiunta per richiamare i punti fatti.