2011-09-29 3 views
0

지정하지 않으면 : (I 최대 절전 모드와 DAO를 사용하고 있습니다)내가 의심이 변화하는 생각이있는 목록 구현

List<String> elements = new ArrayList<String>(); 

elements = elementDao.findElementsById(elementId); 

List<String> elements; 

elements = elementDao.findElementsById(elementId); 

수있는이 원인 오류나 예외 (어떤 List 구현을 반환해야하는지 지정하지 않는다는 사실)?

+0

이 _may_는 컴파일러 경고를 발생시킵니다. – mre

+0

@mre : 어떤 컴파일러 경고를 의미합니까? – beny23

+0

@ beny23, 형식 안전 경고,하지만 정말 그것에 대해 너무 자신감이 아니지만 언급할만한 가치가 있다고 생각했습니다. 제가 틀렸다면, 제 의견을 삭제하겠습니다. :디 – mre

답변

3

첫 번째 것은 새로운 arraylist를 만듭니다. 생성 된 목록은 수집해야하는 쓰레기입니다.

은 두 번째는 더 나은,하지만 당신은 할당 연산자가 호출에 의해 생성 된 목록을 채우는 데 사용 될 수 있다고 생각하는 것 같다

List<String> elements = elementDao.findElementsById(elementId); 

로 감소한다. 그렇지 않다. 대입 연산자는 DAO에 의해 생성 된 목록에 대한 참조를 취하고 (어떤 종류의 List 일 수도 있음)이 참조를 변수에 할당합니다.

List<String> elements = new ArrayList<String>(); 

가 (쓰레기 수집으로 그것을 표시) 새로운 ArrayList를 만들고 elements에 할당 한 다음

elements = elementDao.findElementsById(elementId); 

멀리 원래 ArrayList가 발생합니다 : 때문에

2

안전하게 변경할 수 있습니다 안에 생성 된 Listelements으로 지정하면 두 번째 방법이 안전하고 효율적입니다.

관련 문제