2015-01-20 4 views
-5

SCJP에 대한 모의 테스트를 실시했습니다. 나는<> 연산자가 있거나없는 arraylist의 차이점은 무엇입니까

ArrayList<Integer> arr = new ArrayList<Integer>(); 

ArrayList arr = new ArrayList(); 

1)이 둘 사이의 differnce는 무엇으로 문을 가진 두 개의 서로 다른 문제가 발생?

내 분석 =>은 Integer와 그 하위 클래스를 먼저 저장할 수 있습니다. 2 번째의 클래스는 Object와 그 서브 클래스를 포함 할 수가 있습니다.

2) 일반 클래스의 <없이 개체를 만들 수 있습니까?

+7

차이점은 [검색] (http://docs.oracle.com/javase/tutorial/java/generics/why.html)과 [검색하지 않음] (http://stackoverflow.com/questions/28041224)입니다./what-is-the-the-the-difference-between-arraylist-with-without-operator)를 사용합니다. – TheLostMind

+0

시도해 보시길 바랍니다. 책에서 배우는 것이 한 가지이지만 시도하면 더 잘 기억할 것입니다. –

+0

예, 일반 클래스없이 객체를 만들 수 있습니다. 가장 큰 차이점은 모든 유형의 데이터가 아닌 지정된 유형으로 데이터를 추가 및 검색하는 것을 제한한다는 것입니다. 제네릭의 사용법은 요구 사항에 특정한 객체 만 생성하기 때문에 컬렉션을 구현하는 올바른 방법입니다. – Jango

답변

0

1)이 둘의 차이점은 무엇입니까?
ArrayList<Integer> arr = new ArrayList<Integer>();이 목록에는 정수 클래스 개체가 저장됩니다.

ArrayList arr = new ArrayList(); -이 목록은 모든 유형의 개체를 저장하는 일반적인 목록입니다.

2) 일반 클래스의 <없이 개체를 만들 수 있습니까?

<>은 컴파일 시간에 버그 감지 더함으로써 코드에 안정성을 추가 Java 5
제네릭에 의해 도입 된 제네릭이다.

컬렉션에 개체를 추가 할 때 컬렉션에 필요한 개체 유형을 모르는 경우 오류가 발생하기 쉽습니다. 해당 컬렉션에서 검색해야하는 개체 유형을 지정합니다.

그래서, 그것은 제네릭을 사용하는 것이 좋습니다, Read more about Generics

0

짧은 답변 : 기본적으로 ArrayList<?>에 해당 ArrayList> <없이 의미가 컴파일 타임에 알 수없는에서 목록의 콘텐츠의 유형.

런타임시 유형 삭제로 인해 일반 버전과 일반 버전간에 차이가 없습니다. 단지 객체를 포함하는 목록 일뿐입니다.

제네릭 (<>) 버전을 사용하면 컴파일러에서 최소한 정적 유형 검사를 수행하여 코드가 적어도 유형 수준에서 작동하는지 확인할 수 있습니다.

두 번째 질문에 따라 그렇습니다. 일반 클래스의 비 제네릭 버전을 만들 수 있습니다. 일반적으로 코드의 명확성과 안전성 모두에 나쁜 영향을 미칩니다.

2

1)이 둘 사이의 차이점은 무엇입니까?

이미 답변을 찾으 셨습니다. 자세한 내용을 찾으려면 Java documentation에서 더 자세히 살펴 보시기 바랍니다.

2) 일반 클래스의 <없이 개체를 만들 수 있습니까?

ArrayList<Integer> arr = new ArrayList<Integer>(); 

이상

List<Integer> arr = new ArrayList<Integer>(); 

당신이 의도 ArrayList에 넣어하는 것을 독자에게 명확을하기 때문에 :

IMO, 당신은 항상 첫 번째 방법을 사용해야합니다.