Packages, méthodes statiques [Résolu]

Signaler
Messages postés
2
Date d'inscription
vendredi 31 octobre 2008
Statut
Membre
Dernière intervention
7 juillet 2009
-
Messages postés
22
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
7 juillet 2009
-
Bonsoir.

Voila j'ai un petit problème dans le projet que je mène actuellement.

Pour faire simple, j'ai des packages (src/gui et src/musique entre autres), mais depuis une classe du package gui je ne peux accéder qu'à une méthode statique d'une classe du package gui.

J'aimerai donc savoir s'il est possible d'accéder à une méthode non statique.

Pour résumer :

package gui;
public class Fenetre extends JFrame implements ActionListener{
  public void actionPerformed(ActionEvent e)
  {
    musique.Renommage.renommage(dossier, mode);
  }
}

package musique;
public class Renommage {
  public static void renommage(String rep, int mode)  /* Obligé de mettre en static, sinon l'appel ne marche pas */
  {

  }
}

Le problème c'est que renommage fait des modifications, et ne peut donc pas être static (mais je sais que ça marche sinon, j'ai essayé avec une méthode de lecture qui elle est en static). Sans le static, l'erreur est "Impossible de créer une référence statique à une méthode non statique renommage(String, int) à partir du type Renommage"

Bref je ne comprends pas vraiment, si vous pouviez m'éclairer !

Merci d'avance

Cordialement.

Renaud

3 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
118
Salut,

C'est tout simplement ton appel à ta fonction qui n'est pas le bon : là tu l'appelle justement de façon statique, c'est à dire que tu ne l'appelle pas à partir d'une instance de ta classe Renommage, mais à partir de la classe elle-même.

Il te faut créer une instance pour pouvoir appeler les fonctions membres de ta classe : c'est à la base de tout langage Objet. Tu devrais lire un tutorial (même basique) sur java avant de te lancer dans la programmation Java, sinon tu vas droit dans le mur...

package musique;
public class Renommage {
public void renommage(String rep, int mode
{

}
}

package gui;
public class Fenetre extends JFrame implements ActionListener{
Renommage instanceRenommage = new Renommage();
public void actionPerformed(ActionEvent e)
{
instanceRenommage.renommage(dossier, mode);
}
}
Messages postés
2
Date d'inscription
vendredi 31 octobre 2008
Statut
Membre
Dernière intervention
7 juillet 2009

D'accord merci.


En fait c'est ce que je faisais jusqu'à présent, mais lorsque j'ai créé
mes packages j'ai modifié les appels ... j'aurai du m'en apercevoir
tout seul j'ai honte lol
Messages postés
22
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
7 juillet 2009

Une petite paranthese, une methode statique est une methode qui agit sur une seule et unique instance qui est similaire pour tous les objets d'une classe. Son appel ne se fait, par consequent, plus sur un objet, mais sur une classe. Si tu continuais a utiliser ta methode statique tu aurais du faire un appel comme suit :
Renommage.renommage(rep, mode);