Andreas Rozek Lesehinweise letzte Änderungen Gästebuch-Eintrag Mitteilungen an den Autor  English Version  zur Leitseite zum vorherigen Thema zum nächsten Thema  zur ersten Seite zur vorherigen Seite zur nächsten Seite

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).

Quelltexte

Alle hier vorgestellten Programme und Skripte sind im Quelltext verfügbar:

Haftungsausschluß

Bitte beachten Sie auch den Haftungsausschluß des Autors!

http://www.Andreas-Rozek.de/Rhino/Acquainting/Rhino_21.html    (letzter Stand: 06.04.2002)