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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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