Diskuze: StackOverflowError

Java Java StackOverflowError

Avatar
adam440
Redaktor
Avatar
adam440:

Zdravím,
mám problém se svým programem v Javě. Když ve třídě vytvářím instanci druhé třídy a v té druhé zase té první tak my to hodí error: java.lang.Stac­kOverflowError

Myslím že nejvíce napoví přiložené obrázky. Tu část kódu která není (alespoň myslím, případně zveřejním celé snapshoty) podstatná sem zamazal.

 
Odpovědět 8.5.2014 16:22
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na adam440
Jan Vargovský:

Můžeš ukázat třídu "Hlavni"?

 
Nahoru Odpovědět 8.5.2014 16:31
Avatar
adam440
Redaktor
Avatar
adam440:

Zde je:

 
Nahoru Odpovědět 8.5.2014 16:33
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

No dívej, ukážu ti jak pracuje tvůj program

Začínáš asi někde v té třídě Hlavni bych řekl, takže podle mainu jedeš asi takto:

1. Vytvoříš instanci na třídu Cteni
2. Ve Cteni se vytváří instance na Hlavni a Terminal
3. V Terminalu vytváříš instanci na Cteni ... a tady můžu přestat, protože si z5 na tom prvním kroku, takže jedeš pořád dokola 1,2 a 3 krok :)

Editováno 8.5.2014 17:11
 
Nahoru Odpovědět 8.5.2014 17:11
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na adam440
Jan Vargovský:

To máš jednoduše tak, že máš třeba třídu A a třídu B

v A vytvoříš instanci na B
v B vytvoříš instanci na A

A je to úplně ten samý problém, co máš teď ty.

 
Nahoru Odpovědět 8.5.2014 17:12
Avatar
adam440
Redaktor
Avatar
adam440:

Mockrát děkuju :) . Jenom bych se ještě chtěl zeptat jak by to šlo nejlépe ošetřit?

 
Nahoru Odpovědět 8.5.2014 17:15
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na adam440
Jan Vargovský:

Stačilo by debugovat (krokovat) program a zjistil bys, že je něco špatně. Tomuhle se časem vyvaruješ, když si budeš třeba předávat závislosti a nedělat třídu na jedno použití.

EDIT: koukám ještě na ten obrázek a krásně ti to tam vypisuje, kde se stala chyba :) resp. že je taková dlouhá cesta k tomu, když k vyjímce došlo.

Editováno 8.5.2014 18:52
 
Nahoru Odpovědět 8.5.2014 18:50
Avatar
adam440
Redaktor
Avatar
Odpovídá na Jan Vargovský
adam440:

Jo snad to nějak opravím. Hold asi je vidět že jsem teprve začátečník :[ ale tak chodím na kroužek programování a poslední hodinu jsme měli teprve úvod do OOP. Jinak děkuji za pomoc :).

Editováno 8.5.2014 19:25
 
Nahoru Odpovědět 8.5.2014 19:25
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na adam440
Honza Bittner:

hold == POCTA
holt == ZKRÁTKA, PROSTĚ

Nahoru Odpovědět  +1 8.5.2014 19:34
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na adam440
Jan Vargovský:

Tohle s OOP nemá nic společného. Jen je potřeba občas přemýšlet :)

 
Nahoru Odpovědět 8.5.2014 20:23
Avatar
Lako
Člen
Avatar
Odpovídá na Jan Vargovský
Lako:

A co na to IDE? To mu to nepřinde divný?

 
Nahoru Odpovědět 12.5.2014 21:45
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Lako
Jan Vargovský:

Wut? Trošku jsem to nepobral :)

 
Nahoru Odpovědět 12.5.2014 22:02
Avatar
Lako
Člen
Avatar
Odpovídá na Jan Vargovský
Lako:

No, reáguju na tvůj vysvětlující příspěvek a ptám se, jestli tomuto cyklickému vytváření objektů nějak nezabrání IDE - třeba vyhodí warning, že tu něco smrdí..

 
Nahoru Odpovědět 13.5.2014 10:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.