Looking for java Keywords? Try Ask4Keywords

Java Language Использование объектов Java в JavaScript в Нашорне


пример

Можно передавать объекты Java в механизм Nashorn для обработки в Java-коде. В то же время существуют некоторые конструкции JavaScript (и Nashorn), и не всегда ясно, как они работают с объектами Java.

Ниже приведена таблица, описывающая поведение собственных объектов Java внутри конструкций JavaScript.

Протестированные конструкции:

  1. Выражение в условии if. В выражении JS выражение if не должно быть логическим, в отличие от Java. Он оценивается как false для так называемых значений ложности (null, undefined, 0, пустые строки и т. Д.),
  2. для каждого утверждения Nashorn имеет особый тип цикла - для каждого - который может перебирать разные объекты JS и Java.
  3. Получение размера объекта. В объектах JS есть длина свойства, которая возвращает размер массива или строки.

Результаты:

Тип Если для каждого .length
Java null ложный Нет итераций исключение
Пустая строка Java ложный Нет итераций 0
Строка Java правда Итерации по строковым символам Длина строки
Java Integer / Long значение! = 0 Нет итераций не определено
Java ArrayList правда Итерации по элементам Длина списка
Java HashMap правда Итерирует значения ноль
Java HashSet правда Итерирует элементы не определено

Recommendatons:

  • Целесообразно использовать if (some_string) чтобы проверить, не является ли строка пустой и не пустой
  • for each можно безопасно использовать для итерации по любой коллекции, и она не вызывает исключений, если коллекция не является итерируемой, нулевой или неопределенной
  • Перед тем, как получить длину объекта, он должен быть проверен как null или undefined (то же самое верно для любой попытки вызова метода или получения свойства объекта Java)