Simulation de concept ami en Java
Dans certains scénarios, vous pouvez souhaiter accéder aux méthodes non publiques d'une classe dans un package différent sans établir une relation de sous-classe. Bien que le langage de programmation C le permet grâce au concept « ami », Java ne fournit pas d'équivalent direct. Cependant, il existe une solution de contournement astucieuse qui émule cette fonctionnalité.
Considérons l'exemple suivant : La classe Romeo, appartenant au package 'montague', doit accéder aux méthodes non publiques de la classe Juliet, qui réside dans le ' forfait capulet. En règle générale, cela nécessiterait que Roméo soit une sous-classe de Juliette. Mais dans ce cas, une approche différente est proposée.
Juliet déclare une méthode statique nommée 'cuddle' qui accepte un argument de type 'Romeo.Love'. Cela sert de mesure de sécurité, garantissant que seul Roméo peut invoquer cette méthode. Roméo, quant à lui, définit une classe publique nommée « Love » dont le constructeur est déclaré privé. Cela signifie qu'aucune autre classe ne peut instancier 'Romeo.Love' et que seul Roméo lui-même peut accéder à son constructeur.
En utilisant ce mécanisme, Juliet peut accorder l'accès à ses méthodes non publiques uniquement aux entités qui possèdent un exemple de « Romeo.Love ». Et comme le constructeur de « Romeo.Love » est limité à Romeo lui-même, la sécurité prévue est maintenue.
En résumé, cette solution de contournement permet de simuler le concept « ami » C en Java en exploitant des autorisations de classe et mécanismes de sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!