3 Stimmen

Ein Objekt erstellen, das mehrere Objekte in Java zurückgibt

Ich möchte ein Objekt erstellen, das mehrere Objekte verschiedener Typen enthält und zurückgibt.

Was ist der beste Ansatz dafür? Es scheint mehrere Möglichkeiten zu geben, daher bin ich an den Ideen anderer Leute interessiert.

Danke.

3voto

Péter Török Punkte 111735

Wenn Sie mit einem einzigen Methodenaufruf alle Objekte auf einmal zurückgeben wollen, ist es am besten, alle Objekte in einer (möglicherweise inneren) Klasse zu kapseln und eine Instanz dieser Klasse zurückzugeben.

class Container {
  public static class Container {
    Type1 obj1;
    Type2 obj2;
    ...
  }
  private Type1 obj1;
  private Type2 obj2;
  ...
  public Container getAllObjects() {
    Container container = new Container();
    container.obj1 = this.obj1;
    ...
    return container;
  }
}

(Technisch gesehen könnten Sie auch mehrere Objekte innerhalb einer Object[] Array, allerdings empfehle ich dies nicht, da es an Typsicherheit mangelt und die Möglichkeit besteht, Fehler bei der Bestellung zu machen).

Wenn Sie die Objekte eines nach dem anderen aus verschiedenen Methodenaufrufen zurückgeben wollen, sind die guten alten Getter Ihre Freunde :-)

class Container {
  private Type1 obj1;
  private Type2 obj2;
  ...
  public Type1 getObject1() {
    return obj1;
  }
  public Type2 getObject2() {
    return obj2;
  }
  ...
}

2voto

Mihai Toader Punkte 11831

Erstellen Sie eine ähnliche Klasse wie diese:

class ReturnValue {
   Type1 value1;
   Type2 value2;
}

und geben Sie eine Instanz davon aus Ihrer Methode zurück, wenn Sie wissen, welche Typen Sie immer zurückgeben wollen.

Wenn Sie es nicht wissen, ist die einzige Möglichkeit die Rückgabe einer Object[] mit Ihren Werten.

2voto

Jason Rogers Punkte 18940

Es gibt 3 Möglichkeiten, die ich für Sie sehe:

-1) nutzen Sie die Tatsache, dass die übergebenen Variablen als Referenz übergeben werden. Auf diese Weise können Sie das Objekt direkt in Ihrer Funktion ändern und müssen sich nicht um die Rückgabewerte kümmern

-2) können Sie einfach eine Reihe von Objekten erstellen:

Object[] returnTab = new Object[numberToStore];

(das ist nicht sehr schön, finde ich)

-3) ein ReturnObjectContainer-Objekt erstellen

public class container { public ObjectA a; public ObjectB b;

Arraylist list = new list();

... //Zufügen, was immer Sie speichern müssen }

1voto

Nanne Punkte 63372

Was meinen Sie mit "Rückkehr"? Soweit ich die Begriffe verstehe, geben Objekte nichts zurück, sie sind einfach da. Sie können natürlich Getter haben, die ein Objekt zurückgeben. Könnten Sie mir sagen, von welchen verschiedenen Möglichkeiten Sie sprechen?

Wenn ich Sie richtig verstehe, möchten Sie nur eine Klasse (Objekt) mit mehreren privaten Objekten (Variablen), die durch Funktionen (Mitglieder) gesetzt und geholt werden können.

1voto

Reza Punkte 1348

Ist dies nicht die Definition aller Collection Objects (und der meisten Implementierungen der List-Schnittstelle wie ArrayList)?

Ein Sammelobjekt enthält andere Objekte und gibt sie durch einen Methodenaufruf zurück?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X