Simulation du concept "ami" C en Java
Pour accorder un accès direct aux méthodes privées entre les classes de différents packages en Java, considérez le technique suivante :
Étape 1 : Créer une « Signature de sécurité » Classe
Dans le package de la classe qui souhaite accéder, définissez une classe publique qui agit comme une « signature de sécurité ». Cette classe ne doit être accessible que dans son package.
Étape 2 : Restreindre le constructeur
Rendre le constructeur de la classe de signature de sécurité privé. Cela garantit que seule la classe de son package peut l'instancier.
Étape 3 : Créer une référence statique
Déclarez une variable statique de type classe de signature de sécurité. Cela permet un accès facile à l'objet de signature.
Étape 4 : Définir la méthode cible
Dans la classe qui souhaite autoriser un accès limité, définissez une méthode qui nécessite la classe de signature de sécurité comme argument. Cette méthode doit disposer des autorisations d'accès appropriées, telles que public ou protégé.
Exemple :
Considérons un scénario dans lequel la classe Romeo (dans le package Montague) souhaite accéder à des utilisateurs non- méthodes publiques de la classe Juliet (dans le package Capulet).
Juliet.java:
package capulet; public class Juliet { public void cuddle(Romeo.Love love) { if (love == null) { throw new NullPointerException(); } System.out.println("O Romeo, Romeo, wherefore art thou Romeo?"); } }
Romeo.java:
package montague; public class Romeo { public static final class Love { private Love() {} } private static final Love love = new Love(); public void cuddleJuliet() { Juliet.cuddle(love); } }
Dans cet exemple , la classe Romeo.Love fait office de signature de sécurité. Seul Roméo peut le construire grâce à son constructeur privé. La méthode câlin dans Juliet nécessite une instance de Romeo.Love à exécuter, que Romeo peut fournir. Cela empêche tout accès non autorisé à d'autres classes en dehors du package Montague.
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!