# Mehrere Rückgabeparameter



## Tentoxa (19. Oktober 2004)

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!


----------



## Vincentius (19. Oktober 2004)

Tentoxa hat gesagt.:
			
		

> Gibt es da Möglichkeiten ohne einen Vector oder Objekt zu übergeben?


Nein, dafür müsstest Du eine Wrapper-Klasse schreiben, die die Rückgabeparameter kapselt.


----------



## Thomas Darimont (19. Oktober 2004)

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


----------



## Tentoxa (21. Oktober 2004)

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;
}


----------



## Thomas Darimont (21. Oktober 2004)

Z.Bsp. so:

```
/*
 * 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


----------

