Réplication du concept « ami » en C en Java
En C, le concept « ami » permet aux classes de différents packages d'accéder à des fichiers non publics membres d'autres classes. Java n'a pas d'équivalent direct, mais il fournit une solution de contournement intelligente en utilisant des classes imbriquées.
Implémentation
Considérez deux classes, Roméo et Juliette, provenant de packages différents. Roméo souhaite accéder aux méthodes non publiques de Juliette sans la sous-classer. Voici comment y parvenir en utilisant des classes imbriquées :
// Juliet's package public class Juliet { private void cuddle() { System.out.println("O Romeo, Romeo, wherefore art thou Romeo?"); } // Signature security for cuddle public static class CuddleAllowed { private CuddleAllowed() {} } private static final CuddleAllowed cuddleAllowed = new CuddleAllowed(); public void cuddle(Juliet.CuddleAllowed cuddle) { cuddle(); // Juliet can cuddle herself if (cuddle == cuddleAllowed) { System.out.println("Only Romeo can cuddle Juliet."); } } } // Romeo's package public class Romeo { public static void cuddleJuliet() { Juliet juliet = new Juliet(); juliet.cuddle(Juliet.cuddleAllowed); // Romeo can cuddle Juliet } }
Dans cet exemple :
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!