返回ArrayList强制转换为List与否强制转换

时间:2019-01-10 12:01:00

标签: java list arraylist casting

两者之间有什么区别?

@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 :(得分:3)

第一个代码段返回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));
}

无需更改行为。