2011-08-05 5 views
6

내가 대신 목록의 사용 목록을 시도자바 컬렉션 <Object> 또는 컬렉션 <?>

List<?> list = new ArrayList<Integer>(); 
... 
list.add(1); //compile error 

내가 잘못 할 방법 정수에 새로운 가치를 던져 무엇? 어쩌면 내가 내 프로젝트에서 목록을 사용합니까?

+0

목록을 목록 으로 선언 할 수없는 이유가 있습니까? –

+0

리스트보기 = 새로운 ArrayList (); – nidhin

+0

@nidhin - 원시 타입을 사용하는 것은 바람직하지 않습니다. –

답변

10

List<?>을 의미하지만 어떤 유형인지는 알 수 없습니다.. 올바른 유형의 객체 만 목록에 넣을 수 있지만 유형을 모르기 때문에 실제로 (null 제외)과 같은 목록에 아무것도 넣을 수 없습니다.

변수를 List<Integer>으로 선언하는 것 외에는 다른 방법이 없습니다.

+0

'Generic '을 사용할 수있는 시간이 있습니까? 포함하고있는 객체의 유형과 관련이없는 제네릭 클래스의 작업을 수행 할 수 있습니까? (그런 작업은 왜 고립되어 유용할까요?) –

+1

예. 예를 들어, 'Class '에는 type 매개 변수를 사용하지 않는 많은 메소드가 있습니다. 'List '('List 와 동일합니다.)의 경우 크기를 알아 내거나 다른 목록 (또는 비 목록)과 비교하여'Object'를 가져올 수 있습니다. 유형별. –

1
List<Integer> list = new ArrayList<Integer>(); 
... 
list.add(1); 
4
List<Integer> list = new ArrayList<Integer>(); 

일반 유형 항상도 동일해야한다.

1
List<?> list = new ArrayList<Integer>(); 

? 어떤 타입을 의미하기 때문에 Type을 Integer로 지정해야합니다. 올바른 구문은 다음과 같습니다.

List<Integer> list = new ArrayList<Integer>(); 
관련 문제