2013-08-29 5 views
9

누군가가 ArrayList<?>, ArrayListArrayList<Object>의 차이점을 설명하고 각각을 사용할 수 있습니까? 그것들은 모두 동일하거나 구현 수준에서 각각 다른 의미를 갖고 있습니까?ArrayList <?>, ArrayList, ArrayList <Object>의 차이점은 무엇입니까?

+7

'Java Generics'에 대해 읽는 시간 – anubhava

+0

나는 일반적으로 매개 변수를 넣지 않는다. "가짜"generic. – texasbruce

+3

@texasbruce 그건 정말 나쁜 생각입니다. – arshajii

답변

17

ArrayList<Object>ArrayList<?> 반면 Object의 목록 콘크리트 종류 우리가 알 수없는 목록입니다 (특히입니다 이는 null을 제외한 목록에 아무 것도 추가 할 수 없음을 의미합니다. 목록의 유형이 부적절한 경우 (예 : 수행하려는 작업이 목록 유형에 의존하지 않는 경우 예를 들어 :

public static boolean isBigEnough(ArrayList<?> list) { return list.size() > 42; } 

모든 generics tutorial합니다 (wildcards 섹션 참조)에 적용됩니다.

마지막으로, 형식 매개 변수가없는 ArrayListraw type입니다. 허용되는 유일한 이유는 5 미만의 Java 버전과의 하위 호환성 때문이며 가능할 때마다 사용하지 않는 것이 좋습니다.

+1

을 받아들이지 않기 때문에 새로운 관점이됩니다. –

+0

Very nice. 일부 테스트 프로젝트에서 ArrayList를 사용하고있었습니다 (자습서에서 사용 된 것으로 나타났습니다). 테이크 어웨이는 항상 을 사용할 수 있습니다. – Chrips

1

ArrayList<?>

ArrayList "결정하는 형태를 포함하는 ArrayList 인스턴스"는 ArrayList

ArrayList<Object>의 클래스 Object 종류 함유 ArrayList의 인스턴스 수단. 이 (더)이에 좋은 쓰기 업을 할 수 있었던 것처럼

이 보인다 : http://docs.oracle.com/javase/tutorial/java/generics/types.html

+0

나는 OP에서 Java에서 모든 것이 Object에서 확장되기 때문에 "결정되어야하는 유형"이 무엇을 의미하는지 묻는다고 생각하십니까? 이 목록은 프리미엄 – Victor

관련 문제