Просто быстрый вопрос о том, как параметры передаются в Java...
...
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);
}
В этом случае stdout и stderr (используемые в качестве параметров в tidy()) имеют свои значения, измененные на новый StringBuffer (buffer.substring(i))? Мое предположение заключается в том, что они будут, поскольку объектные переменные (указатели объектов) всегда передаются по значению?