Ваш Javadoc выглядит хорошо для меня. ясно и понятно. Не забудьте добавить, что в списках есть и есть, чтобы быть настроенным, иначе метод может жаловаться на неприятные исключения. Так много для ответа.
Но я предлагаю вам не использовать параметры out
, если вы не вынуждены это делать (например, если вам нужно реализовать сторонние интерфейсы или вам нужно использовать JNDI).
Метод называется getNodes
, поэтому большинство программистов ожидают, что метод возвращает массив или набор узлов. Но в этом случае метод заполняет два переданных списка узлами и голотипами.
Так что если ваш свободный выбор сигнатуру метода, я предлагаю вам объявить его как это:
public List<O> getNodes(List<O> cl) {
List<O> result = pickAllNodesFromList(cl);
return result;
}
public List<O> getHolotypes(List<O> cl) {
List<O> result = pickAllHolotypesFromList(cl);
return result;
}
или объявить специальный тип для класса, как:
class CLTypes<O> {
List<O> nodes = new ArrayList<O>();
List<O> holotypes = new ArrayList<O>();
CLTypes(List<O> cl) {
nodes.addAll(pickAllNodes(cl));
holotypes.addAll(pickAllNodes(cl));
}
// getters for the nodes
// ...
// private methods to pick objects for source list
// ...
}
и реализовать метод как это:
public CLTypes<O> getNodes(List<O> cl) {
return new CLTypes<O>(cl);
}
Если вам необходимо вернуть два списка (как я прочитал с комментариев выше), другое простым решение может быть оборачивать два списка в карте:
public Map<String, List<O>> getNodes(List<O> cl) {
Map<String, List<O>> result = new HashMap<String, List<O>>();
result.put("nodes", pickAllNodes(cl));
result.put("holotypes", pickAllHolotypes(cl));
return result;
}
Лично я стараюсь избегать параметров и вместо этого возвращать объект, который содержит параметры out. Я считаю, что код обычно намного лучше. – TofuBeer
@TofuBeer Я тоже, но не могу сделать это, когда мне нужно вернуть 2 списка. Здесь не возможны два разных метода, так что это то, что у меня есть. Возврат одного списка и передача другого в качестве параметра out. является худшим вариантом ИМХО. – Tom
Вы можете вернуть List [] и документ, что он всегда будет иметь размер 2. Или вы можете создать класс, который обертывает 2 списка (например, struct). –