Usage of Java objects in JavaScript in Nashorn

suggest change

It’s possible to pass Java objects to Nashorn engine to be processed in Java code. At the same time, there are some JavaScript (and Nashorn) specific constructions, and it’s not always clear how they work with java objects.

Below there is a table which describes behaviour of native Java objects inside JavaScript constructions.

Tested constructions:

  1. Expression in if clause. In JS expression in if clause doesn’t have to be boolean unlike Java. It’s evaluated as false for so called falsy values (null, undefined, 0, empty strings etc)
  2. for each statement Nashorn has a special kind of loop - for each - which can iterate over different JS and Java object.
  3. Getting object size. In JS objects have a property length, which returns size of an array or a string.

Results:

Type | If | for each | .length | — | — | — | — | Java null | false | No iterations | Exception | Java empty string | false | No iterations | 0 | Java string | true | Iterates over string characters | Length of the string | Java Integer/Long | value != 0 | No iterations | undefined | Java ArrayList | true | Iterates over elements | Length of the list | Java HashMap | true | Iterates over values | null | Java HashSet | true | Iterates over items | undefined |

Recommendatons:

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents