Frage zu Endlosschleife

nchristoph

Erfahrenes Mitglied
Hallo,

ich bin gerade beim debuggen meines Codes mit Findbugs.

Findbugs wirft mir jetzt folgenden Fehler aus:

Code:
There is an apparent infinite recursive loop in engine.resources.objects.Baseline.lastIndexOf(Object)

Die betreffende Methode ist
Code:
  public int lastIndexOf(Object o) {
     synchronized (objectMutex) {
       return lastIndexOf(o); //In diese Zeile springt Findbugs
     }
   }

Meine Frage: Wie kann diese Methode eine Endlosschleife sein bzw. wie kann ich das Fixen/verhindern?

mfg
Chris
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

die Methode ruft sich ohne Bedingung immer (infinite) selber (recursive) auf. Von daher ist das eine Endlosschleife / ein Stack Overflow / Infinite recursive loop.

Grüße,
BK
 
Zuletzt bearbeitet:

nchristoph

Erfahrenes Mitglied
Danke erstmal für die Antwort.

Soweit hab ichs aber selber schon rausgefunden. Nach ewigem gegoogle hab ich trotzdem noch keine Antwort, wie ich das fixen kann.
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

was willst du mit der Methode überhaupt erreichen? Ohne weitere Informationen, wie deine Klasse aufgebaut ist und was du mit der Methode machen willst kann ich dir leider nicht weiterhelfen.

Grüße,
BK
 

nchristoph

Erfahrenes Mitglied
Also: Diese Methode soll den letzten Index von einer list retourgeben. Ich hab es mittlerweile selber hingekriegt.

Der Rückgabewert muss lauten:
Code:
return list.lastIndexOf(o);

Warum?
lastindexOf(o) hat sich, wie du bereits erwähnt hast immer wieder selber aufgerufen. Mit list.lastIndexOf(o) ruft er den Index der list ab, und nicht sich immer wieder selber.