Stránka 1 z 1

Java metody

Napsal: ned 25. lis 2007, 15:29
od Pulec1337
Dobry den,
chtel bych se zeptat jestli nekdo nevite jak udelat aby mi v Jave vratila metoda dve a vice navratovych hodnot.
Predem diky za odpoved

Napsal: ned 25. lis 2007, 21:24
od €agle
Bud vracet pole, nebo vracet tridu, nebo pouzit pro navratove hodnoty parametry metody...

Napsal: ned 25. lis 2007, 22:35
od Pulec1337
Dekuji za odpoved.
Chci se zeptat na to jak by vypadalo ze by vracela tridu, dost dobre si to nedokazu predstavit predpokladam ze by to byl objekt ale co bude navratovy typ a jak ho specifikuju?

Napsal: pon 26. lis 2007, 22:34
od €agle
Ja nemam Javu moc rad :) Ale rekneme, ze budes mit v tride metodu a chces z ni vratit 3x Integer, 1x Double a 1x String. Nejprve si deklarujes tridu, ktera bude obsahovat pozadovane navratove hodnoty. Je jedno, jestli ji deklarujes uvnitr puvodni tridy, nebo mimo, ale musi byt pristupna v dane metode a v miste, kde metodu volas (takze pozor na public/private/static...). Metodu deklarujes tak, aby jeji navratovy typ byla predtim vytvorena navratova trida. Uvnitr metody pak vytvoris novou instanci navratove tridy a postupne ji prirazujes pozadovane hodnoty. Na konci uz jen vyslednou instanci pomoci return vratis jako vysledek dane metody. Pri volani metody pak musis pocitat, ze navratova hodnota je dana trida a podle toho s ni pracovat... Snad ti tenhle (narychlo splacnuty) priklad nejak pomuze pochopit.

Main.java

Kód: Vybrat vše

public class Main
{
    public static void main(String[] args)
    {
        //vytvori instanci puvodni tridy
        NewClass MyClass = new NewClass();
        //deklarace promenne typu NewClass.ReturnClass, ktera bude obsahovat vysledne hodnoty
        NewClass.ReturnClass retVal;
        //zavola MyClass.myMethod a vyslednou tridu ulozi do retVal
        retVal = MyClass.myMethod(10, 5, "Test");
        //vypise vysledek, k hodnotam v retVal se pristupuje jako k bezne tride
        System.out.println("Hodnota a: " + retVal.a + " b: " + retVal.b + " c: " + retVal.c + " d: " + retVal.d + " s: " + retVal.s);
    }
}
NewClass.java

Kód: Vybrat vše

public class NewClass
{
    //trida pouzita pro navrat vice hodnot
    public class ReturnClass
    {
        //deklarace pozadovanych navratovych promennych
        int a, b, c;
        double d;
        String s;
    }
    
    //metoda myMethod, deklarovana jako ReturnClass
    public ReturnClass myMethod(int x, int y, String text)
    {
        //vytvori instanci tridy ReturnClass, do ktere se budou ukladat navratove hodnoty
        ReturnClass tmp = new ReturnClass();

        //priradi pozadovane navratove hodnoty
        tmp.a = x;
        tmp.b = y;
        tmp.c = x + y;
        tmp.d = x / y;
        tmp.s = text;

        //vrati pozadovane hodnoty ulozene v instanci tridy ReturnClass
        return tmp;
    }
}

Napsal: úte 27. lis 2007, 08:42
od Pulec1337
Diky,
moc pekna ukazka. Mysilm ze jsem to pochopil, jeste si to sam vyzkousim ale myslim ze je to jasne.
Jeste jednou Diky.