| Andreas Rozek |
|
Rhino_21 - Aufruf von Java-Methoden"Rhino_21" beschäftigt sich mit dem Aufruf von Java-Methoden aus JavaScript heraus (unter Verwendung von "LiveConnect"). Dabei wird insbesondere auch die Übergabe von Aufruf-Argumenten sowie die Rückgabe von Funktionsergebnissen untersucht. Zu diesem Zweck definiert "Rhino_21.java" eine Reihe von Methoden, die jeweils ein Argument (eines gegebenen Datentyps) entgegennehmen, dessen Inhalt protokollieren, verändern und das veränderte Objekt wieder zurückliefern. Von "Rhino_21.js" aus werden diese Methoden der Reihe nach aufgerufen und das jeweils zurückgelieferte Ergebnis wieder protokolliert. Dabei werden sowohl alle primitiven Java-Datentypen als auch Zeichenketten, Felder (Arrays) und Benutzer-definierte Objekte untersucht. Das Programm wird ohne weitere Parameter aufgerufen java Rhino Rhino_21.js und liefert folgende Ausgabe: Rhino_21 - invokes Java object methods from within JavaScript
returnBoolean: got true, returned (boolean) false
returnByte: got 1, returned (number) 2
returnShort: got 2, returned (number) 3
returnInteger: got 3, returned (number) 4
returnLong: got 4, returned (number) 5
returnFloat: got 5.0, returned (number) 6
returnDouble: got 6.0, returned (number) 7
returnString: got "(anything)", returned (object) (ANYTHING)
returnArray: got [0, 1, 2, 3], returned (object) [1, 2, 3, 4]
returnObject:
got {aByte:1, aShort:2, aFloat:5.0, anObject:[object Object],
aDouble:6.0, anArray:org.mozilla.javascript.NativeArray@1616c7,
anInteger:3, aString:(anything), aLong:4, aBoolean:true},
returned (object) aByte:2, aShort:3, aFloat:6, anObject:[object Object],
aDouble:7, anArray:true,1,(anything), anInteger:4, aString:(ANYTHING),
newSlot:(created from within Java), aLong:5, aBoolean:false
JavaObject.testVoid() -> "undefined"
(Achtung: manche Ausgabezeilen sind sehr lang und wurden an dieser Stelle deshalb auf mehrere Anzeigezeilen umgebrochen) Die Programmausgabe birgt keine Überraschungen - LiveConnect sorgt zuverlässig für die automatische Typkonvertierung von Aufruf-Argumenten und Funktionsergebnissen. Wird einer Methode, die eigentlich kein Ergebnis zurückliefert ("void") trotzdem eines abgerungen, so ist dieses "undefined". Umgekehrt ist auch das Verwerfen eines Methodenergebnisses problemlos möglich (siehe "JavaObject.testResult();" im JavaScript-Quelltext). QuelltexteAlle hier vorgestellten Programme und Skripte sind im Quelltext verfügbar:
|
| http://www.Andreas-Rozek.de/Rhino/Acquainting/Rhino_21.html | (letzter Stand: 06.04.2002) |