Ich bin nicht sicher, wie die Typen bei der Verwendung von (Mozilla) Rhino zwischen Javascript und Java konvertiert werden.
Es gibt einige Besonderheiten in der Dokumentation zu String
:
Es ist wichtig, dass Sie Java-Strings und JavaScript beachten Strings sind nicht gleich [...] Rhino bietet etwas Hilfe bei der Reduzierung der Unterschiede zwischen den beiden Arten. Erstens können Sie ein JavaScript übergeben string zu einer Java-Methode, die eine Java-Zeichenfolge benötigt und Rhino wird Führen Sie die Konvertierung durch. Wir haben dieses Feature tatsächlich in Aktion gesehen Rufen Sie den java.lang.String-Konstruktor im vorherigen Beispiel auf. Rhino stellt die JavaScript-Methoden auch für Java-Strings zur Verfügung Die java.lang.String-Klasse definiert sie nicht bereits
Aber was ist mit anderen? Wenn ich eine JavaScript-Nummer an eine Java-Methode übergebe, die int
, double
(oder Integer
oder Double
) erwartet, wird sie konvertiert? Was ist mit long
/ Long
? (passt nicht in Double
und passt daher nicht in eine JS-Nummer?
Was ist mit Java-Methoden, die diese Werte zurückgeben?
Dann gibt es Boolean
/ boolean
. Werden die JS-Konstanten true
und false
in und aus dem entsprechenden Java-Wert konvertiert? Ich habe Code wie
von JS verwendet, so denken zumindest einige Leute, dass es nicht ist.
Ich habe mir die Mozilla Rhino-Dokumentation angesehen, aber darauf hingewiesen, ob ich etwas Offensichtliches übersehen habe.
So werden JavaScript-Typen in Java-Typen konvertiert: Ссылка .
>Probieren Sie es aus:
%Vor%UPD
Leider kann ich keine Dokumente über JavaScript-from-Java-Typ-Mapping finden. Aber das Tutorial zeigt, dass JavaScript-Objekte als Java Object
s tatsächlich in den Kontext eingefügt und daraus abgerufen werden kann Double
s, Boolean
s, Function
s (für JavaScript-Funktionen; implementiert auch Scriptable
) oder Scriptable
s (für Objekte) sein.
Wenn Sie dieses Code-Snippet verwenden, erhalten Sie möglicherweise eine JavaScript-Java-Mapping-Referenz:
Wie für LiveConnect-Kompatibilität. Wenn Sie sich auf diese Fußnote beziehen:
Die Fähigkeit, Java von JavaScript aufzurufen, wurde zuerst als implementiert Teil einer Netscape-Browser-Technologie namens LiveConnect. Jedoch, da diese Technologie auch die Kommunikation mit dem Browser umfasste Plugins, und seit dem Aufruf von JavaScript von Java in Rhino ist Ganz anders wird dieser Begriff in diesem Papier nicht verwendet.
Ich denke, dass die Verwendung von JavaScript aus Java sich von der LiveConnect-Spezifikation unterscheidet. Die Verwendung von Java aus JavaScript sollte identisch sein.
Tags und Links javascript java type-conversion rhino