Manchmal möchten Sie mehrere Werte von einer Funktion zurückgeben. Wie wird das normalerweise in Java gemacht?
Eine Möglichkeit besteht darin, ein Array wie dieses Python-Snippet zu verwenden, das eine Liste oder ein Tupel zurückgibt:
value, success = read_unreliably()
if success:
print value
Eine andere Möglichkeit wäre, einen Hash / Dikt zurückzugeben, wie in diesem JavaScript-Beispiel:
var result = readUnreliably()
if (result.success) {
alert(value);
}
Eine weitere Möglichkeit besteht darin, ein benutzerdefiniertes Objekt nur für diesen Zweck zu erstellen, wie in diesem Java-Beispiel:
ReadUnreliablyResult result = readUnreliably()
if (result.getSuccess()) {
System.out.println(result.getValue());
}
Natürlich können Sie auch nur einige globale Variablen verwenden, um das zu speichern, was Sie benötigen, anstatt Dinge weiterzugeben, aber sagen wir einfach, dass dies keine Option ist.
java
coding-style
Mike M. Lin
quelle
quelle
Antworten:
Schmerzlich.
Diese Techniken funktionieren in Java nicht gut. Die Werte müssten von Object herabgestuft werden.
Dies ist am häufigsten der Fall, aber es ist mühsam, all diese kleinen Klassen zu erstellen. In C ++ wird häufig std :: pair verwendet, dies wird jedoch in Java nicht häufig durchgeführt.
Mit Lombok ist es ganz einfach, kleine benutzerdefinierte Objekte zu erstellen:
}}
quelle
Ja, die Art und Weise ein zu schaffen
struct
/tuple
/record
in Java ist durch Erstellen einer Klasse. Wenn es nur für den internen Gebrauch ist, bevorzuge ich die Verwendung einer kleinen unveränderlichen strukturähnlichen Klasse mit öffentlichen Feldern.Beispiele:
Dies ist in Scala viel einfacher:
quelle
Tuple2[Boolean, Int]
. Obwohl Sie in diesem speziellen Beispiel eine zurückgeben würdenOption[Int]
.Für das Beispiel, das Sie gegeben haben, ist das Auslösen einer Ausnahme die Standardmethode, um damit umzugehen:
Wenn Sie Funktionen wie "Do One Thing" anstreben, ist die Funktion zum Zurückgeben mehrerer Werte weniger erforderlich, wenn auch gelegentlich praktisch.
quelle
Wir haben eine generische Paarklasse, die eine Instanz von A und eine Instanz von B speichern kann. Sie können wahrscheinlich ein Triplet oder Quadruplet auf dieselbe Weise erstellen.
quelle
Pair<String, Integer>
Was bedeutet es, wenn eine Methode zurückgegeben wird? Was bedeuten diese Werte? Sie können es unmöglich wissen, ohne die Implementierung der Methode zu lesen.In Java würde Ihre Funktion ein Objekt zurückgeben (oder im Falle eines Fehlers möglicherweise null). Auf diese Weise können mehrere Daten zurückgegeben werden.
quelle
Es gibt keine explizite Möglichkeit, mehrere Variablen in Java zurückzugeben. Es gibt jedoch einige Ansätze:
quelle