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_12 - prüft Typ und Inhalt von JavaScript-Objekten

"Rhino_12" untersucht Datentyp und Inhalt von JavaScript-Objekten unter Java.

Zu diesem Zweck werden vom JavaScript-Teil des Beispiels eine Reihe von (globalen) Variablen mit unterschiedlichen Datentypen angelegt, die anschließend unter Java erkannt und untersucht werden können. Etwas unkomfortabel ist dabei die erforderliche Unterscheidung zwischen numerisch und nicht-numerisch indizierten Datenfeldern - beide sind unter Java unterschiedlich zu adressieren.

Das Programm wird ohne weitere Parameter aufgerufen

  java Rhino_12

und liefert folgende Ausgabe:
 

  Rhino_12 - creates several variables for an examination from within Java

  (enumerable) Properties found in "Global":
    aString: (java.lang.String) -> (anything)
    anArray: (org.mozilla.javascript.NativeArray) -> org.mozilla.javascript.NativeArray@58957f
    aLong: (java.lang.Double) -> 9.223372036854776E18
    aFunction: (org.mozilla.javascript.gen.c1) -> org.mozilla.javascript.gen.c1@3ee284
    aRegExp: (org.mozilla.javascript.regexp.NativeRegExp) -> /./
    aNumber: (java.lang.Byte) -> 1
    aShort: (java.lang.Short) -> 32767
    aByte: (java.lang.Byte) -> 127
    anInteger: (java.lang.Integer) -> 2147483647
    aFloat: (java.lang.Double) -> 1.0
    aBoolean: (java.lang.Boolean) -> true
    aDouble: (java.lang.Double) -> 1.0
    Instance: (org.mozilla.javascript.gen.c3) -> org.mozilla.javascript.gen.c3@965fb
    anInstance: (org.mozilla.javascript.NativeObject) -> [object Object]
    aDate: (org.mozilla.javascript.NativeDate) -> org.mozilla.javascript.NativeDate@67e89
    anObject: (org.mozilla.javascript.NativeObject) -> [object Object]

  a more detailled examination of Global property "anArray":
    0: (java.lang.Boolean) -> true
    1: (java.lang.Byte) -> 1
    2: (java.lang.String) -> (anything)

  a more detailled examination of Global property "aFunction":
    (no properties found)

  a more detailled examination of Global property "aRegExp":
    multiline: (java.lang.Boolean) -> false
    ignoreCase: (java.lang.Boolean) -> false
    global: (java.lang.Boolean) -> false
    source: (java.lang.String) -> .
    lastIndex: (java.lang.Byte) -> 0

  a more detailled examination of Global property "Instance":
    (no properties found)

  a more detailled examination of Global property "anInstance":
    d: (org.mozilla.javascript.NativeDate) -> org.mozilla.javascript.NativeDate@7a3ac1
    e: (org.mozilla.javascript.gen.c2) -> org.mozilla.javascript.gen.c2@276af2

  a more detailled examination of Global property "aDate":
    (no properties found)

  a more detailled examination of Global property "anObject":
    a: (java.lang.Boolean) -> true
    b: (java.lang.Byte) -> 1
    c: (java.lang.String) -> (anything)


Die Programmausgabe zeigt, daß der Zugriff auf JavaScript-Objekte ohne weiteres möglich ist. Erstaunlich ist, welche Klassen Rhino vor allem beim Zugriff auf Variablen "primitiver" JavaScript-Datentypen auswählt: offenbar wird stets versucht, die Rhino-interne Darstellung in eine möglichst "passende" Java-Klasse zu konvertieren - dies vereinfacht die Weiterverarbeitung unter Java.

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_12.html    (letzter Stand: 06.04.2002)