Hej, jag sitter i Java och försöker sätta ihop ett program. Jag har fastnat, men har ingen aning om vad som är fel eller hur det uppstår - jag får inte heller mycket hjälp från Java. Programmet flyter fint genom kompileringen, men vid körningen kan det ta stopp lite här och där känns det som. Koden som är relevant, skulle jag gissa på, är den som följer nedan.
Det jag gör är att jag randomizar ut ett antal objekt ur en Collection, men vidarbefodrar det endast om det inte har vidarbefodrat det tidigare. Har det inte vidarbefodrats tidigare loggar jag det samtidigt, för att veta att det inte slumpas ut igen. Loggningen sker i en annan Collection och jag loggar helt sonika hela objektet. När sedan båda Collection:erna är lika fulla, i.e. loggnings-collection:en har lika många objekt som orginal-collection ska loggnings-collection:en tömmas och allt börjar sedan om.
public Order randomized() {
Order ord = (Order)super.get( random.nextInt( super.size() ) );
if( super.size() == this.loggedOrders.size() )
this.loggedOrders.clear();
if( this.loggedOrders.contains( ord ) )
ord = randomized();
this.loggedOrders.add( ord );
return ord;
}
Behöver jag säga att koden kommer från en wrapper som omsluter en ArrayList?
Felet jag får vid exekvering lyder:
"Exception in 'thread main' java.lang.StackOverflowError"
Hur som helst, jag får det inte direkt - utan det kan kommer efter 3 objekt har slumpats ut från min Collection, eller om 12 objekt har slumpats ut. Jag ser ingen röd tråd. :/