Aus dem, was ich gelesen habe: Der Grund ist, dass es nicht einfach ist zu bestimmen, welche Methode tatsächlich aufgerufen wird, wenn wir eine Vererbung haben.
Warum verfügt Java jedoch nicht mindestens über eine Schwanzrekursionsoptimierung für statische Methoden und erzwingt eine ordnungsgemäße Methode zum Aufrufen statischer Methoden mit dem Compiler?
Warum unterstützt Java die Schwanzrekursion überhaupt nicht?
Ich bin mir nicht sicher, ob es hier überhaupt Schwierigkeiten gibt.
In Bezug auf das vorgeschlagene Duplikat , wie von Jörg W Mittag 1 erklärt :
- Bei der anderen Frage geht es um TCO, bei der anderen um TRE. TRE ist viel einfacher als TCO.
- Bei der anderen Frage geht es auch darum, welche Einschränkungen die JVM für Sprachimplementierungen auferlegt, die in die JVM kompiliert werden sollen. Bei dieser Frage geht es um Java, die eine Sprache ist, die von der JVM nicht eingeschränkt wird, da die JVM-Spezifikation von geändert werden kann die gleichen Leute, die Java entwerfen.
- Und schließlich gibt es in der JVM nicht einmal eine Einschränkung in Bezug auf TRE, da die JVM über die Intra-Methode GOTO verfügt, die alles ist, was für TRE benötigt wird
1 Formatierung hinzugefügt, um gemachte Punkte hervorzuheben.