Méthode non-statique dans un contexte statique : erreur de compilation
Bonsoir,
En lisant le cours Java de Bruce Eckel et en faisant les exercices proposés, je fais évidemment l'erreur du débutant qui m'amène à un message d'erreur :
non-static method storage(java.lang.String) cannot be referenced from a static context.
Je cherche à obtenir le nombre d'octets occupés par un String en mémoire, mon code est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| //: Storage2.java
import java.util.*;
public class Storage {
int storage(String s) {
return s.length();
}
public static void main(String[] args) {
System.out.println(storage(args[0]));
}
} |
Alors évidemment, cette erreur de newbee est archi-documentée, mais sur des exemples différents du mien ; et comme ce n'est que ce soir que je me suis mis au Java, j'ai du mal à appliquer les réponses fournies à mon cas.
Je vois que lorsque je mets :
Code:
static int storage(String s) {
le programme compile et fonctionne convenablement. J'aimerais savoir :
1. Si c'est "propre" de faire ça ;
2. S'il y a d'autres façons de le faire, en déclarant par exemple une instance Storage dans la déclaration même de la classe Storage (j'ai cru voir que c'était possible) ;
3. Si c'est parce que la méthode storage n'agit pas sur une instance Storage, que ça marche quand je déclare static la méthode storage.
Voici mes questions, merci d'avance pour vos réponses !
Endreillie