Juste une petite question sur la façon dont les paramètres sont passés en Java ...Les paramètres de la fonction Java sont-ils toujours transmis valeur par valeur?
... if ((index = stdout.indexOf(pattern)) != -1) { tidy(stdout, index + pattern.length()); return true; } else if ((index = stderr.indexOf(pattern)) != -1) { tidy(stderr, index + pattern.length()); return true; ... private void tidy(StringBuffer buffer, int i) { logger.info("Truncating buffer: " + buffer); buffer = new StringBuffer(buffer.substring(i)); logger.info("Buffer now: " + buffer); }
Dans ce cas, sera stdout et stderr (utilisés comme paramètres dans bien rangé()) ont leurs valeurs changé à nouveau StringBuffer (tampon. sous-chaîne (i))? Mon hypothèse est qu'ils seront comme des variables d'objet (pointeurs d'objet) sont toujours passés par valeur?
voir ceci pour une explication en profondeur avec des exemples http://javadude.com/articles/passbyvalue.htm – akf
voir aussi ce post: http://stackoverflow.com/questions/40480/is-java-pass- par référence – akf