Packages, méthodes statiques

Résolu
cs_dildil Messages postés 2 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 7 juillet 2009 - 6 juil. 2009 à 23:56
Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009 - 7 juil. 2009 à 16:59
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 juil. 2009 à 07:35
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);
}
}
3
cs_dildil Messages postés 2 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 7 juillet 2009
7 juil. 2009 à 10:13
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
0
Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009
7 juil. 2009 à 16:59
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);
0
Rejoignez-nous