Accéder au contenu principal

Générer des sous-classes Java

Dans une classe Java, un champ ou une propriété fait souvent référence à une classe (éventuellement abstraite) possédant une ou plusieurs sous-classe(s). Lors du mapping de ce champ/cette propriété, il est important d'être capable de déterminer la classe concrète spécifiée en entrée et la classe concrète souhaitée en sortie. Notez que la gestion des sous-classes s'applique à toutes les sous-classes connues de l'import (contenues dans les fichiers .jar ou dans les dossiers importés). D'autres sous-classes peuvent exister mais ne sont pas connues de l'import car elles n'ont pas été spécifiées.

Deux stratégies de gestion des sous-classes existent :
  1. Émettre toutes les sous-classes dans une Séquence - Cette stratégie est pratique (et nécessaire) si vous utilisez l'héritage de maps combiné aux sous-classes Java. Avec ce mécanisme, vous pouvez mapper des éléments dans une superclasse d'une map parent et dans une sous-classe d'une map enfant (héritant). Les mappings de superclasse seront correctement hérités. L'inconvénient de cette stratégie est que déclarer la classe que vous souhaitez émettre pour la sortie n'est pas automatique. Vous pouvez modifier la déclaration de la classe de sortie en modifiant une fonction Choice dans la valeur de l'élément class (classe) associé à la superclasse. Il ne s'agit pas d'un processus automatique. Cette option est l'option par défaut.

    Lorsque cette option est utilisée, une structure pour la racine de l'arbre d'héritage avec un nom finissant par _Composite est généré, en plus de toutes les structures générées pour chaque classe Java. Cette structure de composite contient toutes les structures héritées dans l'arbre d'héritage pour le champ/la propriété et peut donc être utilisée comme structure dans une map héritée.

  2. Émettre un Choix pour chaque sous-classe - Chaque sous-classe possible est émise comme membre d'un élément choix avec toutes les propriétés associées à la sous-classe (et toutes les superclasses). Cela signifie que les propriétés de superclasse seront dupliquées parmi les membres du choix. Si vous n'utilisez pas l'héritage de maps, le processus est simple et se déroule bien. Cette option est également plus simple car, lorsque vous mappez quelque chose à une sous-classe de sortie, la bonne expression Emit (Émettre) devrait être automatiquement générée pour indiquer la sous-classe (le membre) à écrire en sortie.

Les options suivantes sont fournies pour la génération de sous-classes :
  • Générer une séquence d'éléments pour toutes les sous-classes possibles (Par défaut) - Implémente la première stratégie ci-dessus pour toutes les sous-classes directes et descendantes possibles.

  • Générer uniquement les éléments pour la classe spécifiée - Génère uniquement la classe spécifiée par le champ/la propriété. Utilisez cette option si vous n'utilisez pas les sous-classes dans vos mappings.

  • Générer un choix et un enfant pour chaque sous-classe directe et descendante - Implémente la deuxième stratégie ci-dessus en générant un choix entre la classe du champ/de la propriété et toutes les sous-classes descendantes. Utilisez cette option si les mappings peuvent inclure une sous-classe descendante.

  • Générer un choix et un enfant pour chaque sous-classe directe - Implémente la deuxième stratégie ci-dessus en générant un choix entre la classe du champ/de la propriété et les sous-classes directes de cette classe uniquement. Utilisez cette option si vous n'utilisez que les sous-classes directes dans vos mappings.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.