Est-il possible de diviser une classe en plusieurs fichiers physiques en utilisant Java ?
Réponses
Trop de publicités?Cela pourrait être une bonne idée si la classe est vraiment si nombreuse que les concepts mis en œuvre ne sont pas faciles à saisir. Je vois deux façons différentes de procéder :
-
Utilisez l'héritage : Déplacer les concepts généraux de la classe vers une classe de base et en dériver une classe spécialisée.
-
Utilisez l'agrégation : Déplacez des parties de votre classe vers une classe distincte et établissez une relation avec la seconde classe à l'aide d'une référence.
Comme nous l'avons mentionné précédemment, il n'existe pas de concept de classes partielles en Java, il faut donc vraiment utiliser ces mécanismes de POO.
En utilisant seulement javac
ce n'est pas possible. Vous pouvez bien sûr combiner plusieurs fichiers en un seul fichier .java dans le cadre de votre processus de construction, et invoquer la commande javac
par la suite, mais cela serait lourd à bien des égards et ne serait probablement pas utile.
Vous pouvez peut-être expliquer votre problème, nous pourrons alors mieux vous aider.
Si vous estimez que vos fichiers .java sont trop volumineux, vous devriez probablement envisager une refactorisation.
Bien sûr, c'est possible, mais je ne pense pas que ce soit utile du tout.
Pour commencer, la division n'est pas vraiment la question je suppose, il suffit de compiler le fichier et de le diviser comme on le souhaite.
Maintenant, pour les rassembler, il suffit d'écrire un chargeur de classe personnalisé qui charge tous les éléments, les combine en un seul tableau d'octets, puis fait appel à defineClass()
.
Comme je l'ai dit, cela semble assez inutile et ce n'est probablement pas ce que vous voulez et certainement pas ce dont vous avez besoin, mais c'est techniquement possible.
(J'ai fait quelque chose de similaire une fois comme une manière plaisante d'obscurcir le code : les octets du fichier de classe étaient dispersés dans les constantes de toutes les autres classes de l'application. C'était amusant, je dois l'admettre).