Bonsoir,
Etant un grand débutant en Java je bloque sur un problème. Il se trouve que j'ai un package A et un sous-package A.z. Dans le package A j'ai une classe toto et dans le package A.z une classe titi. Je voulais faire en sorte que ma classe titi soit instanciable uniquement par des classes qui sont dans le même package mais pas par des classes extérieurs au package (quand je dit exterieur je veux bien dire completement différent par exemple depuis un package B). Après quelque recherche j'ai pu trouver que si je n'indique aucun access modifier cela correspond à friendly, ce qui semble signifier accessible uniquement par les classes du même package. Chouette ça correspond à ce que je souhaite faire. Donc je prends ma classe titi qui est dans A.z, je laisse la classe en public mais je met son constructeur sans aucun access modifier. Normalement cela devrais permettre uniquement au classe du même package de pouvoir l'instancier. Donc j'essais de l'instancier depuis la classe toto qui est dans A. Et la catastrophe cela ne marche pas, Eclipse m'indique que la méthode n'est pas visible. Pourtant les deux classes semblent être dans le même package qui est A (même si titi est dans un sous-package de A).
Ma question est, est-ce que friendly est limité à un seul package, c'est à dire dans mon cas si j'ai un friendly dans A.z cela reste accessible aux classes uniquement dans A.z. Ou bien est-ce que cela se limite au package de plus haut niveau, c'est à dire peut importe dans quelle package friendly est du moment que c'est dans le package A, toutes les autres classes dans A auront aussi accès même si elles sont dans des sous package de A.
Ce qui m'intéresse est de faire en sorte que le constructeur de titi soit friendly mais pas limité à son seul package mais au package parent du sien.
J'espère avoir été clair et que vous apporterez une réponse à mon problème. Je vous en remercie d'avance.
Partager