Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference

freggeln

Mitglied
Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference

In C# habe ich die Methode einer Klasse, bspw. eine Datenbankklasse, dass eine Methode einen Boolean zurückgegeben hat, wenn die Aktion erfolgreich war und per Call-by-reference einen Parameter befüllt hat. Ein einfaches Beispiel:

Code:
public boolean getResult ( ResultSet )

Wie gesagt ein einfaches Beispiel. Natürlich könnte ich für dieses Beispiel einfach statt dem Booolean in Java das ResultSet als Return Value verwenden und im Anschluss auf null prüfen. Falls ich allerdings, wie ich C# eine Überladung der Methode erstelle, die bspw. auch noch per Call-by-reference einen String befüllt hat, um z.B. den Grund zu liefern, warum es nicht erfolgreich war, so hätte ich aktuell in Java ein Problem.

Code:
public boolean getResult ( ResultSet, vStringReason)

Wie kann man also solch ein Problem in Java elegant lösen?

Danke & Gruß
 
Eine Art Holderklasse:

Java:
public class ResultSetHolder {
    private ResultSet resultSet;

    public void setResultSet(ResultSet resultSet) { this.resultSet = resultSet; }

    public ResultSet getResultSet() { return resultSet; }

}

Java:
public boolean getResult(ResultSetHolder resultSetHolder)

Java:
ResultSetHolder holder = new ResultSetHolder();
if (getResult(holder)) {
    ResultSet resultSet = holder.getResultSet();
    ...
}

Natürlich kann man solche Klassen auch generisch machen 🙂
 
Eine Art Holderklasse
Warum dann nicht gleich ganz ohne Seiteneffekte und simulierter Call-By-Reference?

Java:
public Result getResult() { ...  }

Result result = getResult();

boolean   ok  = result.wasSuccessful();
ResultSet rs  = result.getResultSet();
ErrorEnum err = result.getErrorCode();
Exception ex  = result.getException();
 

Neue Themen


Zurück
Oben