IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Restreindre l'accès à un constructeur


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Points : 65
    Points
    65
    Par défaut Restreindre l'accès à un constructeur
    Bonjour,

    je souhaite restreindre l'accès du (des) constructeur(s) d'une classe java à une (d') autre(s) classes.

    Je suis parti du principe de mettre le constructeur en privé (au moins il ne sera pas appelé !) et de déclarer une méthode statique renvoyant une instance de la classe.

    Mais j'aimerais faire mieux et que seules les classes que je veux puissent accéder à cette méthode de récupération d'instance.

    Les classes en question n'ont pas de liens d'héritage et ne sont pas dans des packages indentiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class A {
     
        private A() { }
     
        //Le but est que cette fonction ne soit appelable que par des classes sélectionnées
        public A getInstance() {
            return new A();
        }
     
    }
    Si y'a une solution ça serait bien, sinon je ferais confiance à ceux qui utiliseront mes classes pour ne pas utiliser la méthode getInstance() au mauvais endroit

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    Une petite question pour amener ma réflexion:

    Quel est le lien entre les différentes classes qui pourront avoir accès à cette méthode getInstance ?
    Comment comptes-tu déterminer ces classes ?

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Points : 65
    Points
    65
    Par défaut
    Pour l'instant le lien est un lien de composition (je crois).

    Mes instances de classes "accueillantes" contiennent une liste de d'instances de classes "accueillies". Seulement je ne veux pas que mes classes accueillies puissent être instanciées d'elle même, seulement par ajout dans une liste de classe accueillante.

    Je ne sais pas si je suis très clair. En gros le constructeur de ma classe accueillie ne devrait pouvoir être appelé que dans les méthode de certaines autres classes choisies par moi.

    Sinon les classes n'ont aucune relation entre elles, ni d'héritage, ni d'appartenance à un package (voir même sur des projets différents : plugin RCP).

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    En gros le constructeur de ma classe accueillie ne devrait pouvoir être appelé que dans les méthode de certaines autres classes choisies par moi.
    Ca me parait non possible.
    Par contre, tu peux gerer une liste static de classes et la méthode renvoit 'null' si la classe qui a appelé cette méthode n'est pas dans la liste. Pour le moment, je ne vois que ça

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 632
    Points
    21 632
    Par défaut
    Citation Envoyé par radtriste Voir le message
    Par contre, tu peux gerer une liste static de classes et la méthode renvoit 'null' si la classe qui a appelé cette méthode n'est pas dans la liste. Pour le moment, je ne vois que ça
    Euh... Même ça, je suis curieux d'avoir un exemple.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Euh... Même ça, je suis curieux d'avoir un exemple.
    Sur un Object o:

    Object o = new Object();;
    o.getClass();
    // ou bien o.getClass().getName();
    Ce qui nous donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public class A {
     
        private static Vector<String> authorizedClasses = new Vector<String>();
     
        private A() { }
     
        //Le but est que cette fonction ne soit appelable que par des classes sélectionnées
        /**
         * @param o Classe qui appelle
         */
        public A getInstance(Object o) {
            if(authorizedClasses.contains(o.getClass().getName()))
            {
                return new A();
            }
            return null;
        }
     
    }
    Enfin, c'est une piste.

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 56
    Points : 65
    Points
    65
    Par défaut
    Oui j'avais une petite idée de ce genre, merci de bien me la préciser. Je vais partir comme ça.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/01/2006, 12h46
  2. restreindre les acces aux dossiers
    Par remi77 dans le forum Sécurité
    Réponses: 8
    Dernier message: 08/01/2006, 02h56
  3. Restreindre un accès avec htacess
    Par dinver dans le forum Apache
    Réponses: 1
    Dernier message: 30/09/2005, 20h15
  4. Restreindre l'accès à un dossier
    Par kloss dans le forum Apache
    Réponses: 3
    Dernier message: 22/04/2005, 00h57
  5. Restreindre l'accès des fichiers..
    Par Neilos dans le forum Windows
    Réponses: 6
    Dernier message: 25/08/2004, 01h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo