인프런 커뮤니티 질문&답변

개발중님의 프로필 이미지

작성한 질문수

스프링 배치

ItemReader / ItemWriter / ItemProcessor 이해

CustomerItemReader 소스 중

작성

·

270

0

안녕하세요. 강사님

CustomerItemReader 소스를 코딩 하는 중 list.remove(0) 가 null이 나와서 확인해보니 
강사님은
this.list = new ArrayList<>(list); 이렇게 코딩하셨고,
저는 this.list = list 이렇게 코딩을 했더라고요.

그런데 디버깅을 해보면 this.list = list 이렇게 해도 동일하게 

list에 값이 있고 list.get(0)도 접근이 됩니다. 왜 remove 만 안 되는 걸까요? 

그리고 ListItemReader 클래스를 보면 proxy 여부를 체크하는 이유는 뭔지 궁금합니다.

감사합니다.

답변 1

1

Arrays.asList가 리턴하는 List는 fixed-size list 라고 써있습니다. 즉 사이즈 변경이 안되는 리스트 구현체를 리턴해서 CustomerItemReader 생성자에서 ArrayList로 다시 생성하는 것 같습니다.