44 votes

En Java, peut-on diviser une classe en plusieurs fichiers ?

Est-il possible de diviser une classe en plusieurs fichiers physiques en utilisant Java ?

34voto

Jon Skeet Points 692016

Non, l'ensemble d'une classe doit être dans un seul fichier en Java.

Si vous pensez à la fonction "types partiels" de C#, il n'y a pas d'équivalent en Java. (Si vous ne pensiez pas à C#, ignorez ceci :)

11voto

spa Points 2168

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 :

  1. 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.

  2. 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.

6voto

sleske Points 29978

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.

4voto

biziclop Points 21446

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).

2voto

Peter Knego Points 57985

Non, en Java, cela ne peut pas être fait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X