Przewodnik po języku JavaScript 1.5:Podgląd klas LiveConnect:Konwersja typu danych:Konwersja JavaScript do Java
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
Spis treści |
[edytuj] Konwersja JavaScript do Java
Kiedy wywołujesz metody Java i zmieniasz parametry z JavaScript, typ danych tych parametrów zmienione zostaną konwertowane stosownie do opisanych reguł w następujących tematach:
- Wartości liczbowe
- Wartości Boolean
- Wartości String
- Wartości niezidentyfikowane
- Wartości Null
- Obiekty JavaArray i JavaObject
- Obiekty JavaClass
- Inne obiekty JavaScript
Zwraca wartości metod netscape.javascript.JSObject, które są zawsze konwertowane do przykładu java.lang.Object. Reguły konwersji, które zwracają wartość są także opisane w tym temacie.
Na przykład, jeśli zwraca numer JavaScript JSObject.eval, możesz znaleźć reguły konwersji tegoż numeru do numeru java.lang.Object w wartości liczbowe.
[edytuj] Wartości liczbowe
Kiedy w JavaScript typ Number zmienisz na jako parametry metod Java, Java konwertuje wartości stosownie do zasad opisanych w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| double | * Dokładne wartości są transferowane do Javy bez zaokrąglonych i bez straconych wielkości lub znaku .
|
| java.lang.Double java.lang.Object |
Nowy przykład java.lang.Double jest tworzony i dokładna wartość jest transferowana do Java bez zaokrągleń i bez straconej wielkości lub znaku. |
| float | * Wartości float są dokładnie zaokrąglane.
|
| byte char |
* Wartości są okrążane przy użyciu trybu round-to-negative-infinity.
|
| java.lang.String | Wartości są konwertowane do łańcucha znaków. Na przykład:
|
| boolean | * Wartości 0 i NaN są konwertowanie do false.
|
Kiedy liczba JavaScript przechodzi jako parametr metody Java, która oczekuje przykładu z java.lang.String, numer jest konwertowany do łańcucha znaków. Użyj metody equals() do porównania rezultatów tej konwersji z innymi wartościami łańcuchów znaków.
[edytuj] Wartości logiczne
Kiedy w JavaScript typ Boolean zmienisz na parametry metod Javy, Java konwertuje wartości stosownie do zasad opisanych w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| boolean | Wszystkie wartości są konwertowane w kierunku wyposażenia Javy. |
| lava.lang.Boolean java.lang.Object |
Nowy przykład java.lang.Boolean jest utworzony. Każdy parametr tworzy nowy przykład, nie jeden przykład z tymi samymi prymitywnymi wartościami. |
| java.lang.String | Wartości są konwertowane do łańcuchów znaków. Na przykład:
|
| byte char |
* true staje się 1
|
Kiedy zmienimy JavaScript wartość boolean, który jest jako parametr do metod Javy, oczekuje przykładu java.lang.String, wartość boolean jest konwertowana do wartości string. Użyj operatora == do porównania rezultatów tej konwersji z innymi wartościami string.
[edytuj] Wartość String
Kiedy w JavaScript typ string zmienisz na parametry metod Javy, Java konwertuje wartości stosownie do zasad opisanych w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| java.lang.String java.lang.Object |
JavaScript 1.4:
JavaScript 1.3 i wcześniejsze:
|
| byte
double |
Wszystkie wartości są konwertowane do liczb opisanych w ECMA-262. Wartości string JavaScript jest konwertowana do liczby stosownie do opisu ECMA-262. |
| char | JavaScript 1.4:
JavaScript 1.3 i wcześniejsze:
|
| boolean | * Pusty łańcuch staje się false.
|
[edytuj] Wartości niezidentyfikowane
Kiedy w JavaScript wartości niezidentyfikowane zmienisz na parametry metod Javy, Java konwertuje wartości stosownie do zasad opisanych w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| lava.lang.String java.lang.Object |
Wartość jest konwertowana do przykładu java.lang.String, którego wartość jest łańcuch "niezdefiniowany". |
| boolean | Wartość staje się false. |
| double float |
Wartość staje się NaN. |
| byte char |
Wartość staje się 0. |
Konwersja niezdefiniowanej wartości wartość prawdopodobnie w JavaScript 1.3 i późniejszych wersjach. wcześniejsze wersje JavaScript nie dostarczają wartości niezdefiniowanych.
Kiedy wartość niezdefiniowana JavaScript jest zmieniona na parametr metody Java, która oczekuje na przykład java.lang.String, wartość niezdefiniowana jest konwertowana do wartości string. Użyj operator == do porównania tych konwersji z inną wartością string.
[edytuj] Wartość Null
Kiedy w JavaScript wartości null zmienisz na parametry metod Javy, Java konwertuje wartości stosownie do zasad opisanych w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| Jakaś class Jakiś typ interfejsu |
Wartość stanie się null. |
| byte char |
Wartość stanie się 0. |
| boolean | Wartość stanie się false. |
[edytuj] Obiekty JavaArray i JavaObject
W wielu sytuacjach, kiedy zmieniałeś JavaScript JavaArray lub JavaObject jako parametry metod w Javie, Java prosto rozpakowuje obiekt; w kilku sytuacjach, obiekt jest poprawiany do innego typu danych stosowanych do opisu zasad w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| Jakiś interfejs lub klasa, która przypisuje kompatybilność z rozpakowanym obiekt. | Obiekt jest rozpakowany. |
| java.lang.String | Obiekt jest rozpakowywany, metoda toString rozpakowanego obiektu Java jest nazywana, i w rezultacie zwrócona jako nowy przykład java.lang.String. |
| byte char |
Obiekt jest rozpakowany, i w następujących dwóch sytuacjach się może to zdarzyć:
|
| boolean | W JavaScript 1.3 i późniejszych wersjach, obiekt jest rozpakowywany i przytrafia się w obu następujących sytuacjach:
W JavaScript 1.2 i wcześniejszych wersjach, obiekt jest rozpakowany i zdarza się w obu następujących sytuacjach:
|
interfejs lub klasa jest kompatybilnym przypisaniem z rozpakowanego obiektu jeśli obiekt ten jest przykładem typu parametru Javy. To jest, że następująca instrukcja musi zwrócić true:
unwrappedObject instanceof parameterType
[edytuj] Obiekty JavaClass
Kiedy w JavaScript obiekt JavaClass zmienisz na parametry metod Javy, Java konwertuje wartości stosownie do zasad opisanych w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| java.lang.Class | Obiekt jest rozpakowany. |
| java.lang.JSObject java.lang.Object |
Obiekt JavaClass jest pakowany w nowym przykładzie java.lang.JSObject. |
| java.lang.String | Obiekt jest rozpakowywany, metoda toString rozpakowanego obiektu Java jest nazywana, i w rezultacie zwrócona jako nowy przykład java.lang.String. |
| boolean | W JavaScript 1.3 i późniejszych wersjach, obiekt jest rozpakowywany i przytrafia się w obu następujących sytuacjach:
W JavaScript 1.2 i wcześniejszych wersjach, obiekt jest rozpakowany i zdarza się w obu następujących sytuacjach:
|
[edytuj] Inne obiekty JavaScript
Kiedy w JavaScript jakikolwiek obiekt zmienisz na parametry metod Javy, Java konwertuje wartości stosownie do zasad opisanych w następującej tabeli:
| Java typ parametru | Zasady konwersji |
|---|---|
| java.lang.JSObject java.lang.Object |
Obiekt JavaClass jest pakowany w nowym przykładzie java.lang.JSObject. |
| java.lang.String | Obiekt jest rozpakowywany, metoda toString rozpakowanego obiektu Java jest nazywana, i w rezultacie zwrócona jako nowy przykład java.lang.String. |
| byte char |
Obiekty są generowane używając wartości logicznej operatora ToPrimitive opisanego w ECMA-262. Użyj ukryty PreferredType z operatorem Number. |
| boolean | W JavaScript 1.3 i późniejszych wersjach, obiekt jest rozpakowywany i przytrafia się w obu następujących sytuacjach:
W JavaScript 1.2 i wcześniejszych wersjach, obiekt jest rozpakowany i zdarza się w obu następujących sytuacjach:
|