

Java, odeslání pole do jiného classu
Ahoj, potřeboval bych poradit, jak dostat jedno pole z classu A, do classu B.
Vůbec mě nenapadá jak na to, díky za radu.
Ahoj, potřeboval bych poradit, jak dostat jedno pole z classu A, do classu B.
Vůbec mě nenapadá jak na to, díky za radu.
Zpět do poradny Odpovědět na původní otázku Nahoru
Specifikuj, co myslíš tím "poslat" pole...
Děkuji za odpovědi.
Poslat pole, tím myslím:
Mám 2 class soubory.
Soubor A zobrazuje JFrame okno a soubor B načítá data z txt souboru a podle tich dat vytvoří pole.
Já bych potřeboval to pole ze souboru B zpřístupnit pro práci v souboru A.
Pole je formátu Shape[] kraje = new Shape[13];
Normálně si předáš referenci.
To slovo mi něco říká, nicméně, nevím co znamená.
Příklad:
Ve třídě, která to načítá ze souboru, budeš mít metodu:
V další třídě budeš mít:
Evidentně neznáš naprosté základy.
Raději vracej kopii pole. Aby ostaní třídy nemohli měnit původní pole. Použij System.arraycopy().
To jde o způsob použití. Pokud se to má v jedné třídě načíst a ve druhé používat, tak je zbytečné dělat kopii.
Děkuji, vím jak je to myšlené, bohužel teď nastal problém v tom, že když chci (nevím jestli to správně programátorsky nazvu a vysvětlím) vytvořit ,,objekt,,
static Kraj k = new Kraj(); - abych po té mohl volat Shape[] kraje = k.getShapes();
Tak static Kraj k = new Kraj(NAZEV, POLE); má vstupy nazev a pole, které class A nemá přístupné.
Nemohl bys to popsat trochu lépe? Co znamená, že je nemá přístupné?
Omlouvám se,
nemá přístupné, znamená, že vstupem do té metody(NÁZEV, POLE) jsou hodnoty, které se zpracují v classu B (v souborovým načitači), tudíž, je nemohu získat v classu A.
Tak je nedávej do konstruktoru. Jaký je má smysl dávat do konstruktoru, když jejich se jejich hodnoty zjistí až při vytváření?
Protože zase v předchozím kroku vytvářim objekty, to je složitý, vidím že to nejspiš nepůjde tak lehce.
A co kdyby se to pole uložilo do souboru? Např txt, to by šlo, ne??
Ale nevím jak je pole SHAPE reprezentováno, asi ne jen int hodnotama..?
Nejspíš to máš celé špatně navržené. Ale to se nedozvíme, protože vlastně vůbec nevíme, o co se snažíš. Pole obsahuje pouze reference na objekty.
Dej sem cely kod. Jinak se nehnem...
Zalezi, co pise. Jestli si pise jenom nejakou hovadinu pro sebe, tak je to asi jedno. Kdyz ale navrhuje nejaky verejny interface, tak je lepsi vracet vsude kopie objektu (poli, kolekci apod.), aby byla zajistena imutabilita. Samozrejme, ze to neni jenom o tomhle, ale je to dobry zacatek...
K tomu, abych dělal nějaký veřejný interface mám rozhodně daleko, je to práce do školy.
Kódy jsem přiložil do přílohy.
Vysvětlím oč mi jde:
Soubor HlavniOkno zobrazí gui(zatím jen s tlačítkem).
Soubor kraj a zobrazenimapy NAČTE hodnoty z txt souboru kraje_cr, podle kterých vykreslí polygony krajů v čr.
Naházel jsem ty polygony do pole, a to bych rád z přistupnil v HlavniOkno (jelikož s nima budu dále pracovat).
---------------------------------------------
Na internetu jsem našel kód co ukládá pole do souboru(to by asi bylo nejlehčí, ale pouze pole byte.
Mělo by to fungovat tak, že když kliknu na tlačitko, tak se všechny vyplní barvou např, do zelena..
Pokud to budete někdo zkoušet zapínat, tak pozor, cesta k souboru pro kraje_cr je na mou plochu.