Mehrere Rückgabeparameter

Tentoxa

Grünschnabel
Hallo Leute,

wie kann man in Java mehrere Rückgabeparameter von verschiedenen Typs realisieren (z.B. String und boolean )? Gibt es da Möglichkeiten ohne einen Vector oder Objekt zu übergeben?

Grüße!
 
Hallo!

Du könntest z.Bsp ein Object[] Array zurück geben in das du deine Werte gelegt hast...
Dabei musst du natürlich Referenztypen verwenden.

Gruß Tom
 
Thomas Darimont hat gesagt.:
Hallo!

Dabei musst du natürlich Referenztypen verwenden.


Könntest Du das nochmal genauer spezifizieren?

Etwa so:
Bsp:

public Data getData()
{
Data dat = new Data();

dat.number = this.numb;
dat.availability = this.availability

return dat;
}
 
Z.Bsp. so:
Code:
/*
 * Created on 21.10.2004
 */
package de.tutorials;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.swing.JButton;

/**
 * @author Darimont
 *  
 */
public class Test26 {

    public static void main(String[] args) {
        new Test26().test();
    }

    private void test() {
       //1
        Data data = new Data();
        System.out.println(data);
        modifyData(data);
        System.out.println(data);

        //oder:
        //2
        Object[] o = new Object[2];
        System.out.println(Arrays.asList(o));
        modifiyO(o);
        System.out.println(Arrays.asList(o));

        //oder:
        //3
        List list = new ArrayList();
        System.out.println(list);
        modifyList(list);
        System.out.println(list);

        //oder:
        //4
        Object[] oA = getValues();
        System.out.println(Arrays.asList(oA));

        //oder:
        //5
        List l = getValuesL();
        System.out.println(l);
        
        //oder:
        //6
        Data d = getTheData();
        System.out.println(d);
    }

    private Data getTheData() {
        Data d = new Data();
        d.availability = true;
        d.number = 12222;
        return d;
    }

    private List getValuesL() {
        //...
        return new ArrayList() {
            {
                add("nmo");
                add("pqrs");
            }
        };
    }

    private Object[] getValues() {
        return new Object[] { "ASDF", new Integer(123) };
    }

    private void modifyList(List list) {
        list.add("ABC");
        list.add(new JButton("TEST"));
    }

    private void modifiyO(Object[] o) {
        o[0] = "Hallo Welt";
        o[1] = new Long(System.currentTimeMillis());
    }

    private void modifyData(Data data) {
        data.availability = true;
        data.number = 4711;
    }

    class Data {
        int number;

        boolean availability;

        public String toString() {
            return "Number: " + number + " availability: " + availability;
        }
    }
}

Zu Beispiel 1-3
Damit hast du dann kein explizites return mehr, da du die Änderungen an der als Parameter übergeben Referenz vornimmst.

Zu Beispiel 4-6
Hier gibt es einen expliziten Rückgabewert in Form einer Liste, eines Arrays oder eine einfach nur als Klassen Instanz deren Datenstrukturen die geänderten Daten enthalten.

HTH
Gruß Tom
 
Zurück