2012-12-08 6 views
-1

Je veux faire un paquet de redirection vers un autre paquet. Par exemple, j'ai un paquet appelé "paquetA" et un autre appelé "paquetB", et l'importation de paquetA importerait paquetB. Je veux pouvoir faire ceci sans copier le paquet. En outre, est-il possible d'exécuter une méthode si packageA a été importé au lieu de packageB?Rendre la redirection de paquet vers un autre paquet

+4

Non faisable. Pardon. –

+0

Java n'a pas cette "caractéristique". –

+3

Pourquoi voudriez-vous faire cela? –

Répondre

1

Regardons comment fonctionne le compte import:

Tout d'abord, import importe que des classes ou des interfaces. Il jamais importe un package. En particulier, quelque chose comme

import java.util.* 

importe toutes les classes et les interfaces dans le package nommé java.util. Ce paquet est simplement un conteneur pour les classes et les interfaces, donc cela n'a vraiment aucun sens de parler de "l'importation d'un paquet". Un paquet en lui-même n'est pas quelque chose qui compile ou s'exécute. Cela dit, cela n'a aucun sens de parler de "redirection" car à quoi allez-vous rediriger? Si vous voulez importer une classe de "paquetA", il vous suffit de l'importer directement. De même, l'importation d'une classe à partir de packageA vous donne accès à ses méthodes classes. Puisque cette classe est dans le paquet A, cela n'a aucun sens d'essayer de l'importer depuis le paquetageB. Même si packageB a une classe avec le même nom, ce sont deux classes différentes. En fait, c'est la raison principale des paquets en Java: éviter les conflits de noms pour les classes écrites par deux programmeurs différents. Avec tout cela, quel problème avez-vous rencontré que vous essayez de résoudre avec "rediriger les importations"?

+0

Je veux que les gens qui utilisent mon pot puissent utiliser l'ancien nom du paquet ET le nouveau nom du paquet. Est-ce que la classe peut être dans deux paquets en même temps? – Runemoro

+0

@Runemoro Non, deux classes dans deux paquets sont deux classes différentes. Une façon de résoudre le problème est de créer la classe 'A' dans le paquetA et une autre classe nommée' A' dans le paquetB qui étend 'packageA.A'. –

1

Réponse courte: Non

Réponse longue: Un paquet fait partie de la classe et import énoncés sont lus au moment de la compilation, ils ne sont pas interprétées. Ce que vous voulez devrait être fait par un compilateur Java tordu. Puisque certains compilateurs sont open-source, ce peut-être pourrait être fait mais ne comptez pas trouver une telle fonctionnalité. Autre solution: Si vous utilisez un EDI comme Netbeans, Eclipse, etc. Il existe de nombreux outils de refactoring qui pourraient vous aider à changer le nom d'un paquet en un autre.

Questions connexes