Hallo Erkan,
das ist ein alternatives, erweitertes Feature von CORBA zum Rückgabewert.
Ein Vorteil der out-Parameter im Vergleich zum Rückgabewert ist, das es viele out-Parameter mit unterschiedlichen Typen geben kann. Hingegen gibt es nur einen einzigen Rückgabewert eines bestimmten Typen.
Eine (mir bekannte einzige) Javaeigene Lösung für dieses Problem wäre ein Object[] Feld als Rückgabewert zu verwenden.
inout Parameter ist so in Java garnicht gegeben.
public void quadriere (inout long x); //IDL
public int quadriere(int x); //Java
Wie du siehst kommt IDL mit einem einzigen Parameter aus, hingegen braucht Java noch zusätzlich einen Rückgabewert.
Jedoch könnte man sich auch hier mit einem Array behelfen.
Code:
public class InOut {
public static void main(String[] args) {
int[] i = { 5 };
quadriere(i);
System.out.println(i[0]);
}
public static void quadriere(int[] x) {
x[0] = x[0] * x[0];
}
}
Fazit: Du darfst hier nicht zu sehr fixiert auf Java sein. Das Argument das kann man anderweitig in Java lösen, also braucht man das nicht, ist nicht richtig. Wie du bestimmt schon erfahren hast ist CORBA eine sowohl plattformunabhängige, als auch programmiersprachenunabhängige Schnittstelle. Deswegen versucht IDL möglichst alle Konstrukte der unterstützten Sprachen abzudecken. Damit gibt es dann in IDL auch viele alternative Lösungsmöglichkeiten. Der Mittelpunkt von Verteilten Anwendungen ist der entfernte Methodenaufruf, welcher je nach System, Situation weitere Probleme, Herausforderungen mit sich bringt. Eben hier liegt die Notwendigkeit, der sehr vielen Datentypen und Sprachkonstrukte der IDL die zunächst sehr ähnlich zu sein scheinen, doch für den einen oder anderen spezifischen Fall wesentliche Vorteile mit sich bringen.
Vg Erdal