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

NetBeans Java Discussion :

Comment obtenir une classe?


Sujet :

NetBeans Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut Comment obtenir une classe?
    Bonjour

    j'ai une classe private qui n'est pas appelé par une autre méthode:
    La classe qui doit être appelée est dessous:
    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
    21
    22
    23
    24
    25
     
    private static class PropertyInfo
        {
            private String alias;
            private String dpbName;
            private Integer dpbKey;
            private String description;
     
            private int hashCode;
     
            public PropertyInfo(String alias, String dpbName, Integer dpbKey,
                    String description) {
                this.alias = alias;
                this.dpbName = dpbName;
                this.dpbKey = dpbKey;
                this.description = description;
     
                hashCode = 17;
                if (alias != null)
                    hashCode ^= alias.hashCode();
     
                hashCode ^= dpbName.hashCode();
                hashCode ^= dpbKey.intValue();
            }
        }
    Je dois l'appeler par le code qui est en dessous:
    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
    21
    22
    23
    24
    25
     
        private String getCanonicalName(String propertyName)
        {
            PropertyInfo propInfo = (PropertyInfo)aliases.get(propertyName);
     
            if (propInfo == null) {
                int key;
                String tempKey = propertyName;
                if (!tempKey.startsWith(FBConnectionHelper.DPB_PREFIX))
                {
                    tempKey = FBConnectionHelper.DPB_PREFIX + tempKey;
                    PropertyInfo.PropertyInfo( propertyName, tempKey, key, propertyName);
                }
     
                propInfo = (PropertyInfo)dpbMap.get( key);
            }
            if( propInfo == null)
            {
                return propertyName;
            }
            else
            {
                return propInfo.dpbName;
            }
        }
    Mais la propertyInfo.propertyInfo( propertyName, tempKey, key, propertyName);
    n'est pas reconnue par le compilateur
    Comment le faire reconnaitre? ce sera

  2. #2
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    Citation Envoyé par JeanNoel53 Voir le message
    Mais la propertyInfo.propertyInfo( propertyName, tempKey, key, propertyName);
    n'est pas reconnue par le compilateur
    Comment le faire reconnaitre? ce sera
    public PropertyInfo(String alias, String dpbName, Integer dpbKey,
    String description)

    n'est pas une méthode mais un constructeur. Tu ne peut pas l'appeler en utilisant le point (.) mais en utilisant un new par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    propInfo = new PorpertyInfo(propertyName, tempKey, key, propertyName);

  3. #3
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut etComment récolter le résultat
    Bonjour
    C'est d'avoir une réponse rapide et pertinente

    Cependant j'ai encore besoin d'aide: Je débute en Java

    Le constructeur de la classe appelée ne comporte pas de return. Intuitivement je mettrais return this

    J'ai modifié le constructeur pour le compléter et la fonction appelante pour tenir compte de l'appel du constructeur
    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
     
    public PropertyInfo(String alias, String dpbName, Integer dpbKey, String description)
            {
                this.alias = alias;
                this.dpbName = dpbName;
                this.dpbKey = dpbKey;
                this.description = description;
     
                hashCode = 17;
                if (alias != null)
                    hashCode ^= alias.hashCode();
     
                hashCode ^= dpbName.hashCode();
                hashCode ^= dpbKey.intValue();
                this.dpbKey = hashCode;
                dpbKey =  hashCode;
            }
    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
    21
    22
    23
    24
     
     public String getCanonicalName(String propertyName)
        {
            PropertyInfo PropertyInformation;
            PropertyInfo propInfo = (PropertyInfo)aliases.get(propertyName);
            if (propInfo == null) {
                int key = 0;
                String tempKey = propertyName;
                if (!tempKey.startsWith(FBConnectionHelper.DPB_PREFIX))
                {
                    tempKey = FBConnectionHelper.DPB_PREFIX + tempKey;
                    PropertyInformation = new PropertyInfo( propertyName, tempKey, key, propertyName);
                }
                propInfo = (PropertyInfo)dpbMap.get( key);
            }
            if( propInfo == null)
            {
                return null;
            }
            else
            {
                return propInfo.dpbName;
            }
        }
    dans mon code j'ai les retours suivants
    PropertyInformation n'est pas connu dans le contexte présent, et derrière le get se passe mal. dans le constructeur key est à une valeur pertinente et cette variable reste nulle dans la fonction appelante.

    J'ai besoin de récupérer la valeur de key dans l'appelant: comment faire?

    merci d'avance de me faire aller droit

  4. #4
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    Effectivement key reste null après l'appel du constructeur car en Java les paramètres passés aux méthodes sont toujours passés par valeur. Donc la méthode ne peut pas modifier une variable.

    à mon avis tu devré recupérer la valeur de key depuis l'attribut dpbKey de la classe PropertyInfo en lui créant un getter du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private static class PropertyInfo
        {
            private Integer dpbKey;
     
            public Integer getDpbKey() {    //getter de l'attribut dpbKey
              return dpbKey;
            }
            ....
    Ensuite tu utilise ce getter pour récuperer la valeur de dpbKey dans ton autre classe genre tu remplace ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    propInfo = (PropertyInfo)dpbMap.get( key);
    par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    propInfo = (PropertyInfo)dpbMap.get( PropertyInformation.getDpbKey());
    Bonne chance !

  5. #5
    Membre extrêmement actif
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Par défaut merci
    c'est

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/09/2005, 22h15
  2. Comment obtenir une couleur clignotante dans un TStringGrid ?
    Par OutOfRange dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2005, 00h46
  3. Comment obtenir une TOpenDialog en fsStayOnTop ?
    Par Tardiff Jean-François dans le forum Composants VCL
    Réponses: 7
    Dernier message: 28/06/2005, 12h53
  4. comment obtenir une ligne aléatoirement
    Par titoumimi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/05/2005, 15h52
  5. Réponses: 17
    Dernier message: 04/04/2005, 17h50

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