возвращение приведения ArrayList в List против отсутствия приведения - PullRequest
0 голосов
/ 10 января 2019

В чем разница, если таковая имеется, между двумя:

@ModelAttribute(value = "attendanceStatuses")
public List<Code> getAttendanceStatusCodes() {
    List<Code> attendanceStatuses= new ArrayList<Code>(
      cacheService.getValidCodesOfCodeGroup(CODE_GROUP));
    return attendanceStatuses;
}

и

@ModelAttribute(value = "attendanceStatuses")
public List<Code> getAttendanceStatusCodes() {
    return cacheService.getValidCodesOfCodeGroup(CODE_GROUP);
}

Метод cacheService:

List<Code> getValidCodesOfCodeGroup(CodeGroupName codeGroupName);

1 Ответ

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

Первый фрагмент возвращает копию List, возвращенную cacheService.getValidCodesOfCodeGroup(CODE_GROUP):

new ArrayList<Code>(cacheService.getValidCodesOfCodeGroup(CODE_GROUP))

Второй фрагмент не имеет - он просто возвращает cacheService.getValidCodesOfCodeGroup(CODE_GROUP).

Хотя ни в одном из этих фрагментов нет приведения.

Обратите внимание, что присвоение List локальной переменной перед ее возвратом не имеет значения. Вы можете изменить первый фрагмент на:

public List<Code> getAttendanceStatusCodes() {
    return new ArrayList<Code>(cacheService.getValidCodesOfCodeGroup(CODE_GROUP));
}

без изменения поведения.

...