2014-06-12 5 views
1

나는 방법을 입력으로지원되지 않는 운영은()

List<SomeEntit> 

의 수

foo(list); 

을 얻었다.

내 방법 foo는 다소처럼 보이는 다음

public void foo(List<SomeEntity someEntities) { 
    someEntities.add(anotherEntity); 
} 

나는 다음 "에 javax.ejb.EJBException를 : java.lang.UnsupportedOperationException가"를 얻을 "java.lang.UnsupportedOperationException가 : 널 (null)"에 의한에 " at AbstractList.add (AbstractList.java:148) "

왜 이런 일이 일어 났는지 말해 줄 수 있습니까? 내 코드 예제가 너무 작지 않기를 바랍니다.

+0

'List'는 어떤 종류의 하위 집합에서 나온 것처럼 들리므로 수정이 불가능합니다. 목록을 복사하고 사본을 삭제할 수 있습니까? – vikingsteve

+0

"목록"의 유형은 무엇입니까? –

+0

'list '에 할당 된 것을 보여주십시오. – arshajii

답변

0

일부 목록이 불가능한 있습니다. 요소를 추가하는 작업은 "지원되지 않음"입니다.

Java 콜렉션 프레임 워크에는 수정 불가능 목록 또는 기타 수정할 수없는 콜렉션에 대해 구별 유형이 없습니다. 뭔가 추가하는 것이 허용되는지는 결코 알 수 없습니다. 전달할 목록을 수정해야한다고 지정하면됩니다.

0

입력으로받은 List의 실제 유형이 add 방법보다 우선합니다.

ArrayList처럼 수행하는리스트의 구현에 그 목록을 변환보십시오 :

List<SomeEntity> newList = new ArrayList<>(list); 
foo(newList);