Diskuze: StackOverflowError

Java Java StackOverflowError

Aktivity (1)
Avatar
adam440
Redaktor
Avatar
adam440:8.5.2014 16:22

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ý:8.5.2014 16:31

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

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

Zde je:

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

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ý:8.5.2014 17:12

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:8.5.2014 17:15

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ý:8.5.2014 18:50

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:8.5.2014 19:25

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
Šupák
Avatar
Odpovídá na adam440
Honza Bittner:8.5.2014 19:34

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

Nahoru Odpovědět  +1 8.5.2014 19:34
Milovník Dartu. Student FIT ČVUT. Sleduj mě na https://twitter.com/tenhobi a zeptat se mě na cokoli můžeš na https://...
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na adam440
Jan Vargovský:8.5.2014 20:23

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:12.5.2014 21:45

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ý:12.5.2014 22:02

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:13.5.2014 10:52

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
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Lako
Jan Vargovský:13.5.2014 11:08

Nemyslim si.

 
Nahoru Odpovědět 13.5.2014 11:08
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.