Java Language Utilisation d'objets Java en JavaScript dans Nashorn


Exemple

Il est possible de passer des objets Java au moteur Nashorn pour qu'ils soient traités en code Java. Dans le même temps, il existe des constructions spécifiques à JavaScript (et à Nashorn), et leur fonctionnement avec les objets Java n'est pas toujours clair.

Vous trouverez ci-dessous un tableau qui décrit le comportement des objets Java natifs dans les constructions JavaScript.

Constructions testées:

  1. Expression dans la clause if. Dans JS expression in, la clause if n'a pas besoin d'être booléenne contrairement à Java. Il est évalué comme faux pour ce que l'on appelle des valeurs de falsification (null, non défini, 0, chaînes vides, etc.)
  2. Pour chaque instruction, Nashorn a un type particulier de boucle - pour chacun - qui peut parcourir différents objets JS et Java.
  3. Obtenir la taille de l'objet Dans JS, les objets ont une longueur de propriété qui renvoie la taille d'un tableau ou d'une chaîne.

Résultats:

Type Si pour chaque .longueur
Java null faux Pas d'itérations Exception
Chaîne vide Java faux Pas d'itérations 0
Chaîne Java vrai Itère sur les caractères de chaîne Longueur de la chaîne
Entier Java / Long valeur! = 0 Pas d'itérations indéfini
Java ArrayList vrai Itère sur des éléments Longueur de la liste
Java HashMap vrai Itère sur les valeurs nul
Java HashSet vrai Itère sur les articles indéfini

Recommandations:

  • Il est conseillé d'utiliser if (some_string) pour vérifier si une chaîne n'est pas nulle et non vide
  • for each peut être utilisé en toute sécurité pour parcourir n'importe quelle collection, et ne déclenche pas d'exceptions si la collection n'est pas itérable, nulle ou indéfinie
  • Avant d'obtenir la longueur d'un objet, il doit être vérifié pour null ou undefined (la même chose est vraie pour toute tentative d'appeler une méthode ou d'obtenir une propriété d'objet Java)