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