2012-05-19 4 views
4

Eclipe, Java에서 나는 여러 가지 작업을 수행하고 결국에는 argument 요소를 사용하여 생성 된 목록을 반환해야합니다. 이리스트가 null 인 경우,이 메소드는 빈 상태 (empty)의리스트를 돌려 줄 수가 있습니다. 이것은 for 문이 빈리스트와 작동하기 때문에 모든 곳에서 체크가 필요없는 것을 방지하기위한 것입니다.타입 NULL을 반환하지 않으려는 경우 안전 경고

나는 다음과 같은 방법으로이 작업을 수행 :

return tempList == null ? Collections.EMPTY_LIST : tempList; 

이 그러나 다음과 같은 경고를 제공합니다

유형의 안전 : List 형태의 표현이 List<Element>에 comfirm 할되지 않은 변환이 필요합니다.

Eclipse가 제안하는 모든 솔루션이 작동하지 않습니다. 나는 문제를 짐작하고 있는데 Collections.EMPTY_LIST 일반 목록을 반환하지만이 문제를 해결하는 방법을 모릅니다.

답변

7

로컬 변수 선언을 실제로 피하려면이 구문을 사용하십시오.

return elements == null ? Collections.<Element>emptyList() : elements; 
7

Collections.emptyList()을 비어 있고 형식 안전하며 변경할 수없는 목록으로 사용하십시오.

+0

다음과 같이하면 트릭을 만들었습니다. 리스트 emptyList = Collections.emptyList(); return tempList == null? emptyList : tempList; 유형을 알아야하기 때문에 로컬 변수를 피할 수 없다고 추측하십시오. – Sven

+0

@ Rangi의 대답을 참조하십시오. – Jeremy

+0

어쨌든 두 줄이 있으므로'if (tempList == null) tempList = Collections.emptyList();' – yshavit

0

new ArrayList<Element>()을 돌려 주시겠습니까?

+4

클라이언트가 반환 된 목록을 사용하는 방법에 따라 다릅니다. 클라이언트 코드가 수정하면 (예를 들어 추가) 새 목록을 반환하는 것이 유일한 방법입니다. 그렇지 않으면 Collections.emptyList()가 더 읽기 쉽고 불필요한 새 객체를 줄일 수 있습니다. –

관련 문제