Maison > développement back-end > C++ > Comment puis-je simuler la fonctionnalité « ami » de C en Java ?

Comment puis-je simuler la fonctionnalité « ami » de C en Java ?

Mary-Kate Olsen
Libérer: 2024-12-17 00:28:25
original
241 Les gens l'ont consulté

How Can I Simulate C  's `friend` Functionality in Java?

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?");
    }
}
Copier après la connexion

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);
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal