Давным-давно у меня был разговор с Кеном Арнольдом (один раз член команды Java), это было бы на первой конференции Java One, вероятно, в 1996 году. Он сказал, что они думают добавить несколько возвращаемых значений чтобы вы могли написать что-то вроде:
x, y = foo();
Рекомендованный способ сделать это тогда и сейчас - создать класс, содержащий несколько элементов данных, и вернуть его вместо этого.
Исходя из этого и других комментариев, сделанных людьми, работавшими на Java, я бы сказал, что намерение состоит в том, чтобы вы возвращали экземпляр класса, а не изменяли переданные аргументы.
Это обычная практика (как и желание программистов на C модифицировать аргументы ... в конце концов они обычно видят способ Java сделать это. Просто подумайте об этом, как о возвращении структуры.: -)
(Изменить на основании следующего комментария)
Я читаю файл и генерирую два
массивы типа String и int из
это, выбирая один элемент для обоих из
каждая строка. Я хочу вернуть оба
их к любой функции, которая вызывает его
какой файл разделить таким образом.
Думаю, если я правильно вас понимаю, то, вероятно, я бы поступил так:
// could go with the Pair idea from another post, but I personally don't like that way
class Line
{
// would use appropriate names
private final int intVal;
private final String stringVal;
public Line(final int iVal, final String sVal)
{
intVal = iVal;
stringVal = sVal;
}
public int getIntVal()
{
return (intVal);
}
public String getStringVal()
{
return (stringVal);
}
// equals/hashCode/etc... as appropriate
}
и затем используйте ваш метод так:
public void foo(final File file, final List<Line> lines)
{
// add to the List.
}
и затем назовите это так:
{
final List<Line> lines;
lines = new ArrayList<Line>();
foo(file, lines);
}