Diese Frage stellte ich in meinem Kopf aus dem folgenden Kommentar auf Stack-Überlauf:Nimmt eine rekursive Methode jemals ein Klassenattribut/Datenfeld als Parameter?
F: Warum ist rekursive Methode in der Regel statisch in Java?
Antwort: Weil eine rekursive Methode/Algorithmus allgemein allein durch die Parameter gesteuert wird und nicht durch Instanz variables.Any Methode , die auf Instanzvariablen beruht nicht kann (und wahrscheinlich sollte) sein statisch gemacht.
Es gibt viele andere Methoden, die in einer Klasse definiert werden können, die nicht von den Instanzen gesteuert werden, sondern Methodenparameter. Ein einfaches Beispiel wäre, wenn ein Objekt, das von einem Konstruktor ohne Argumente erstellt wird, eine parametrisierte Methode aufruft, wird die Methode wirklich von den Parametern gesteuert.
Dann habe ich nur eine mögliche Ausnahme gefunden: Wenn die Parameter in einer Methode auch Klassenattribute sind, dann kann die Methode nicht statisch sein, weil die Attribute für jede Instanz geändert werden. Das bedeutet, dass die rekursive Methode niemals Parameter als Klassenattribute akzeptiert.
Bitte korrigieren Sie mich, wenn ich falsch liege. Bitte geben Sie mir ein Beispiel, wenn ich richtig liege. Der Stack-Überlauf-Post, den ich zitiere, ist here.
Es sind keine Parameter, die eine statische Methode rechtfertigen, es sind Instanzvariablen. Wenn die Methode Instanzvariablen in irgendeiner Weise erhält oder setzt, kann sie nicht statisch sein. Selbst ein mit dem Standardkonstruktor initialisiertes Objekt verfügt über Instanzvariablen, die in einer Instanzmethode verwendet werden können. – 4castle
Der Kommentar, den Sie sagen, dass, wenn es sich nicht auf Instanzvariablen verlässt, es statisch gemacht werden sollte, völlig falsch ist. Bitte glaube es nicht. –
Die Prämisse Ihrer Frage ist falsch. – Raedwald