Pour être précis tu ne cherches pas à modifier la valeur de l'objet mais la valeur d'un pointeur sur l'objet. En Java, tout est référence donc lors du passage en paramètre un nouveau pointeur sur la même zone mémoire est créé, mais il s'agit bien de deux pointeurs indépendants ce qui explique que ton code ne marche pas. Tu peux faire comme ça si tu tiens vraiment à ce que ça soit null (même si je doute que ça ait un intérêt quelconque) :
1 2 3 4 5 6 7 8 9 10 11
|
public static void main(String[] args) {
Socket socket = new Socket();
socket = close(socket);
// ici, je voudrait que l'appelé (la fonction close()) ait mis automatiquement la variable socket à null
}
public static void close(Socket s) {
s.close();
return null;
} |
Petite chose aussi, même si c'était qu'un code d'exemple tu aurais pu respecter les règles pour une méthode main en Java à savoir
public static void main(String[] args)
Il n'existe aucune autre façon valide d'écrire un main en Java. Même chose pour le mot-clé delete qui n'existe pas en Java (et pour cause, c'est un langage avec GC où il est impossible de gérer manuellement la mémoire). Tu n'aurais pas un peu confondu avec du C++ ?
Partager