Мне неясны правила преобразования типов между Javascript и Java при использовании (Mozilla) Rhino.
Есть некоторые особенности в документация о String
:
Важно помнить, что строки Java и JavaScript струны разные. […] Rhino помогает уменьшить различия между двумя типами. Во-первых, вы можете передать JavaScript строку в метод Java, который требует строки Java, и Rhino будет выполнить преобразование. Мы действительно видели эту функцию в действии на вызов конструктора java.lang.String в предыдущем примере. Rhino также делает методы JavaScript доступными для строк Java, если класс java.lang.String их еще не определяет
А как насчет других? Если я передам номер javascript в метод Java, ожидающий int
, double
(или Integer
или Double
), он будет преобразован? А как насчет long
/ Long
? (который не помещается в Double
и поэтому не помещается в номер JS?
А как насчет методов Java, возвращающих эти значения?
Тогда есть Boolean
/ логическое
. Преобразованы ли константы JS true
и false
в соответствующее значение Java и обратно? Я видел код вроде
java.lang.Boolean.TRUE.booleanValue()
, используемый из JS, поэтому по крайней мере, некоторые думают, что это не так.
Я просмотрел документацию Mozilla Rhino, но хочу указать, если я пропустил что-то очевидное.