Вернуть пустую коллекцию Vector вместо null - PullRequest
0 голосов
/ 16 января 2019

У меня есть функция, которая возвращает вектор, и в случае ошибки я хочу вернуть пустой вектор, который можно проверить с помощью Collections.isEmpty вызывающим методом. Но я не могу найти способ сделать это, поскольку Collections предоставляет функции Collections.emptyList для List, Maps и т. Д., Но не для Vector, и я вынужден возвращать null по функциям, которых я хочу избежать.

Как этого добиться?

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Я хочу вернуть пустой вектор, который можно проверить с помощью Collections.isEmpty

Хотите ли вы вернуть пустой вектор или вы хотите, чтобы Collections.isEmpty () возвращал значение true при пропуске пустого вектора?
Как правило, возвращение пустого вектора указывает на отсутствие ошибки, а на пустой результат - вам следует подумать о создании (проверенного) исключения для ошибки - что сделает договор между методом и вызывающим объектом более понятным. Если позднее вы захотите, чтобы метод мог возвращать пустой вектор для указания пустого результата (и без ошибок), вы сможете сделать это без изменения всего вызывающего кода.

0 голосов
/ 16 января 2019

Разве вы не можете использовать свой собственный метод?

 return vector.isEmpty() ? new Vector<?>() : vector;
0 голосов
/ 16 января 2019

Вы можете вернуть new Vector<X>(), но лучшим решением было бы отойти от Vector, который устарел в течение (многих) лет. Если вам не требуются функции параллелизма, вместо этого вы можете использовать ArrayList.

Вы добавили, что получаете Vector от сторонней службы. Не забывайте, что Vector - это List, так что вы можете использовать что-то вроде этого:

public List<X> getData() {
  try {
    Vector<X> v = getDataFromService();
    return v;
  } catch (ServiceException e) {
    return Collections.emptyList();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...