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

Langage Java Discussion :

static / non-static ???


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut static / non-static ???
    Salut,

    je suis en train d'ecrire une classe qui devra etre apellé depuis un logiciel. Ce logiciel en question impose que les methodes qu'il va apeller soit déclaré static. Ici je vais devoir apellé la methode doTheChange donc je la declare static. Lorsqu'elle n'est pas declaré static, la classe se compile sans probleme mais elle ne peut pas etre apellé depuis le logiciel. Et lorsque je la declare static, alors je ne peux plus la compiler. J'ai l'erreur suivante :

    crpsante/CacheAM.java [31:1] non-static variable this cannot be referenced from a static context
    PostProcessingPrincipal ppp = new PostProcessingPrincipal(amAdminUID);

    Est ce que qqun voit comment je pourrais contourner ce probleme?

    Merci d'avance


    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    package crpsante;
     
    import com.iplanet.sso.*;
    import com.iplanet.am.util.Debug;
    import com.iplanet.am.sdk.*;
    import com.sun.identity.authentication.spi.AMPostAuthProcessInterface;
    import com.sun.identity.authentication.spi.AuthenticationException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.*;
     
     
    public class CacheAM {
     
       private static String amAdminUID = "uid=amAdmin,ou=People,dc=crp-sante,dc=healthnet,dc=lu";
     
       public static void doTheChange()
            throws AuthenticationException {
     
          try {
              SSOTokenManager tokenManager = SSOTokenManager.getInstance();
     
              PostProcessingPrincipal ppp = new PostProcessingPrincipal(amAdminUID);
     
              ....................
              ....................
     
     
          } catch (Exception ex) {
              System.out.println("Error in CacheAM.doTheChange : "+ex);
          }
      }
     
      class PostProcessingPrincipal implements java.security.Principal {
     
         private String name;     
     
         public PostProcessingPrincipal(String name) {
             this.name = name;         
         }
         public boolean equals(Object o) {
             return (
                            (o instanceof java.security.Principal)
                          &&
                            ( ((java.security.Principal)o).getName().equals(name))
                          );
         }
         public String getName() {
             return name;
         }
         public int hashCode() {
             return name.hashCode();
         }
         public String toString() {
             return name;
         }
     }   
     
    }

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    une méthode statique ne doit pas manipuler des attributs d'instance mais uniquement des attributs statiques.
    Dans ton cas l'attribut est la classe interne PostProcessingPrincipal .

    Essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private static PostProcessingPrincipal ppp = new PostProcessingPrincipal(amAdminUID);
    private static String amAdminUID = "uid=amAdmin,ou=People,dc=crp-sante,dc=healthnet,dc=lu";
     
       public static void doTheChange() {
           ...........
    }


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    ca marche pas ca :

    crpsante/CacheAM.java [31:1] illegal start of expression
    static PostProcessingPrincipal ppp = new PostProcessingPrincipal(amAdminUID);
    ^
    1 error
    Errors compiling CacheAM.

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    est-ce que tu utilise des attributs d'instance dans ta classe interne ?
    si c'est le cas tu ne peux pas l'utiliser dans ta méthode statique.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 86
    Points
    86
    Par défaut
    ca marche pas non plus, par contre j'ai essaye de declarer la classe PostProcessingPrincipal en static sans toucher la declaration de mon object ppp et la ca marche.
    merci quand meme, tu m'as mis sur la voie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      static class PostProcessingPrincipal implements java.security.Principal  {

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

Discussions similaires

  1. ArrayList static non static
    Par Team2009 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 23/05/2010, 22h23
  2. Static / non static Utilisation Java
    Par Bobble dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 04/11/2009, 16h59
  3. appel static/non static
    Par greg08 dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2008, 10h25
  4. Pb de fonction ( static / non static )
    Par Luffy49 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/05/2007, 13h28
  5. [débutant] Static références et non-static références ?
    Par Sarvok dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 01/11/2005, 12h51

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