Java: non-static method cannot be referenced from a static context
Résolu
Ritius
-
Ritius -
Ritius -
A voir également:
- Java non static method cannot be referenced
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
Bonjour,
Que ce soit dans une classe ou dans une interface il n'est jamais possible de déclarer une méthode static sans code comme ton
Que ce soit dans une classe ou dans une interface il n'est jamais possible de déclarer une méthode static sans code comme ton
public static Type methode();
- Soit dans ton interface tu as une méthode static (donc avec du code) et dans ce cas il faut l'appeler de manière static avec le nom de l'interface.
public interface Interface { static String methode(){ return "Hello World!"; } }
Interface.methode();
- Soit dans ton interface tu as juste une méthode déclarée, sans code (donc non static) et dans ce cas il faut l'appeler depuis un objet qui implémente cette interface.
public interface Interface { String methode(); }
public class Classe implements Interface { @Override public String methode(){ return "Hello World!"; } }
Classe objet = new Classe(); objet.methode();
D'accord, je vois, merci pour ta réponse.
Par contre, si j'essaie de faire:
objet.getMethode();
dans une classe autre que celle où j'ai déclaré mon getteur, j'ai une erreur de type <identifier> expected ou bien "cannot resolve symbol 'getMethode'
J'ai essayé de mettre mon getter en statique, ou d'instancier un autre objet, mais ça n'a rien changé.
Par contre, si j'essaie de faire:
objet.getMethode();
dans une classe autre que celle où j'ai déclaré mon getteur, j'ai une erreur de type <identifier> expected ou bien "cannot resolve symbol 'getMethode'
J'ai essayé de mettre mon getter en statique, ou d'instancier un autre objet, mais ça n'a rien changé.
Est-ce que tu as déclaré la méthode comme étant public ?
Remarque : sans ton code je ne peux que faire des hypothèses, je peux tomber juste où être complètement à côté de la plaque, donc pour éviter de tourner autour du pot il serait préférable que tu copies ton code sur le forum pour savoir exactement de quoi tu parles...
Remarque : sans ton code je ne peux que faire des hypothèses, je peux tomber juste où être complètement à côté de la plaque, donc pour éviter de tourner autour du pot il serait préférable que tu copies ton code sur le forum pour savoir exactement de quoi tu parles...
D'accord, merci à toi de prendre le temps de me répondre. Alors voilà mon code.
Ce que j'aimerais faire, c'est aller dans la classe DecreaseGrayLevel, et utiliser la variable grayLevel (contenue dans la classe ByteGrayColor). J'imagine que je dois utiliser son accesseur getGrayLevel() pour récupérer sa valeur, mais je n'y arrive pas, et donc je suis bloquée à cette étape-là.
Ce que j'aimerais faire, c'est aller dans la classe DecreaseGrayLevel, et utiliser la variable grayLevel (contenue dans la classe ByteGrayColor). J'imagine que je dois utiliser son accesseur getGrayLevel() pour récupérer sa valeur, mais je n'y arrive pas, et donc je suis bloquée à cette étape-là.
import java.awt.Color; /** * Classe ByteGrayColor: Pour manipuler le coleur d'un pixel en niveau de gris (grey level). */ public class ByteGrayColor implements GrayColor { private static final int MINIMUM_GRAY_LEVEL = 0; private static final int MAXIMUM_GRAY_LEVEL = 255; private static final int OPACITY = 1; public static final ByteGrayColor WHITE = new ByteGrayColor(MAXIMUM_GRAY_LEVEL); public static final ByteGrayColor BLACK = new ByteGrayColor(MINIMUM_GRAY_LEVEL); // entier compris entre 0 (noir) et 255 (blanc) private static int grayLevel; // accesseur public ByteGrayColor(){ this.grayLevel = MINIMUM_GRAY_LEVEL; } // constructeur public ByteGrayColor(int grayLevel) { this.grayLevel = grayLevel; } // constructeur du grayLevel via un double public ByteGrayColor(double luminosity) { double conversionLum = luminosity*256; int conversionLumInt = (int)Math.round(conversionLum); this.grayLevel = conversionLumInt; } // accesseur public double getGrayLevel(){ return grayLevel; } // accesseur retournant la luminosité de la couleur (entre 0 noir et 1 blanc) public double getLuminosity(){ double grayLevelDouble = new Double(grayLevel); double lumosity = grayLevelDouble/256; return lumosity; } ///////////////////////////////////////////////////////////////////// public GrayColor invert(){ return new ByteGrayColor(MAXIMUM_GRAY_LEVEL-this.grayLevel); } @Override public Color getColor(){ float component = (float)getLuminosity(); return new Color(component, component, component); } //comparaison du niveau de gris général à celui de l'objet o public int compareTo(GrayColor o) { int oGrayLevel = (int) o.getGrayLevel(); return this.grayLevel-oGrayLevel; } @Override public boolean equals(Object o) { if (this == o) return true; if (this.getClass() != o.getClass()) return false; ByteGrayColor color = (ByteGrayColor) o; return this.compareTo(color) == 0; } }
public class DecreaseGrayLevels implements Transform{ int nbGrayLevels; ByteGrayColor grayLevelImport = new ByteGrayColor(1); // --> erreur ici <-- // Cannot resolve symbol 'getGrayLevel' grayLevelImport.getGrayLevel(); @Override public void applyTo(GrayImage image) { } }
/** Interface for transformations to Image **/ public interface Transform { void applyTo(GrayImage image); }
Le problème c'est que tu ne peux pas faire d'appels comme ça si ton code n'est pas dans une méthode.
Mais sinon ça fonctionne :
Mais sinon ça fonctionne :
public class DecreaseGrayLevels implements Transform { int nbGrayLevels; private void toto(){ ByteGrayColor grayLevelImport = new ByteGrayColor(1); grayLevelImport.getGrayLevel(); } @Override public void applyTo(GrayImage image) { } }
Par contre maintenant j'aimerais stocker (toujours dans ma classe DecreaseGrayLevel)
dans une variable de type double, mais j'ai l'erreur suivante:
y aurait-il un moyen de bien stocker la valeur de image.getPixelGrayColor(i, j); dans un double ?
image.getPixelGrayColor(i, j);
dans une variable de type double, mais j'ai l'erreur suivante:
incompatible types. Found: 'GrayColor', required: 'double'
y aurait-il un moyen de bien stocker la valeur de image.getPixelGrayColor(i, j); dans un double ?