181 votes

Java : Sous-paquetage visiblité ?

J’ai deux paquets dans mon projet : et . Il existe certaines méthodes que je veux être visible seulement par les classes dans ces deux paquets. Comment est-ce que je peux faire cela ?

EDIT : S’il n’y a pas de concept de sous-paquetage en Java, est-il un moyen de contourner cela ? J’ai certaines méthodes que je veux être disponible que pour les testeurs et les autres membres de ce paquet. Je dois tout jeter juste dans le même package ? Utiliser la vaste réflexion ?

187voto

starblue Points 29696

Tu peux pas. En Java, il n’y a pas de concept de sous-paquetage, donc odp.proj et odp.proj.test sont complètement distincts des paquets.

64voto

Asaph Points 56989

Les noms de vos paquets allusion au fait que l'application est ici pour les tests unitaires. Le modèle utilisé est de mettre les classes que vous souhaitez tester et de l'unité de test de code dans le même package (dans votre cas odp.proj), mais dans les différentes sources d'arbres. Si vous mettez vos classes en src/odp/proj et votre code de test en test/odp/proj.

Java ne le "package" modificateur d'accès qui est le modificateur d'accès par défaut lorsqu'aucun n'est spécifié (ie. vous ne spécifiez pas de public, privé ou protégé). Avec le "package" modificateur d'accès, seules les classes en odp.proj ont accès à l'méthodes. Mais gardez à l'esprit que, dans Java, les modificateurs d'accès ne peut pas être invoqué pour faire respecter les règles d'accès car à la réflexion, tout accès est possible. Modificateurs d'accès sont simplement suggestive (à moins restrictif du gestionnaire de sécurité est présent).

11voto

peter.murray.rust Points 13406

Ce n'est pas une relation spéciale entre odp.proj et odp.proj.test - ils ont juste arriver à être nommé comme apparemment liées.

Si l'odp.proj.paquet de test est de simplement fournir des tests, vous pouvez utiliser le même nom de paquet (odp.proj). Les ide comme Eclipse et Netbeans va créer des dossiers distincts (src/main/java/odp/proj et src/test/java/odp/proj) avec le même nom de paquet, mais avec JUnit sémantique.

Notez que ces IDEs va générer des tests pour les méthodes en odp.proj et de créer le dossier approprié pour les méthodes de test, il n'existe pas.

5voto

duffymo Points 188155

Quand je fais cela dans IntelliJ, mon arbre source ressemble à ceci :

  • SRC / / source racine
    • ODP
      • proj / / .java source ici
  • Test / / test racine
    • ODP
      • proj / / / / JUnit ou TestNG source ici

4voto

Fredrik Points 4195

EDIT: Si il n'y a pas de concept de sous-paquetage Java, est-il de toute façon autour de cela? J'ai certaines méthodes que je veux être disponible uniquement pour les les testeurs et les autres membres de la package.

Il dépend probablement un peu sur vos motivations pour ne pas les afficher, mais si la seule raison est que vous ne voulez pas polluer le public interface avec les objets destinés uniquement pour les tests (ou quelque autre chose) je mettrais les méthodes dans une autre interface publique et ont les consommateurs de la "caché" des méthodes d'utilisation de cette interface. Il ne sera pas empêcher les autres de l'aide de l'interface, mais je ne vois aucune raison pourquoi vous devriez.

Pour les tests unitaires, et si c'est possible sans avoir à réécrire le lot, suivez les suggestions pour utiliser le même package.

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