Simuler le concept "ami" C en Java
Java n'offre pas de concept "ami" explicite comme on le voit en C qui autorise les classes à partir de différents forfaits pour accéder aux membres non publics. Cependant, une technique intelligente peut être utilisée pour reproduire ce comportement.
Réplication de "ami" C en Java
Considérons deux classes, Roméo et Juliette, dans des packages séparés. Juliette veut restreindre l'accès à ses méthodes à Roméo. En C , cela pourrait être obtenu en déclarant Roméo comme « ami » de Juliette.
En Java, un effet similaire peut être obtenu grâce à l'utilisation d'un constructeur privé et d'une référence statique.
public static void cuddle(Romeo.Love love) { if (love == null) throw new NullPointerException(); System.out.println("O Romeo, Romeo, wherefore art thou Romeo?"); }
public static final class Love { private Love() {} }
Seul Roméo peut construire un Romeo.Love exemple. Roméo crée ensuite une référence Romeo.Love finale statique :
private static final Love love = new Love();
public static void cuddleJuliet() { Juliet.cuddle(love); }
Seul Roméo peut exécuter la méthode cuddle de Juliet car il y a accès à l'instance Romeo.Love. Les autres classes ne peuvent pas instancier Romeo.Love puisque son constructeur est privé.
Cette technique permet à Roméo d'accéder à la méthode câlin de Juliet tout en restreignant l'accès des autres classes, simulant efficacement le concept « ami » en Java, où Juliet ne fait confiance qu'à Roméo. .
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!