2011-04-19 4 views
2

자바에서 일반적인 개념에 대해 많이 읽었습니다. 이미 에 StackOverflow에 정확한 답변을 삭제하고 약간의 의심을 가지고 있었다.Java Generics - 포괄적 인 "시작"가이드?

나는이 질문이 여기 전에 물어되었다고 생각하지 않는다.
많은 것을 검색했습니다. 하지만, 아무 나는 나의이 질문에 대한 답을 찾을 수 없습니다 모든 것이
에서 (자바)를 일반적인 프로그램에서 발생하는 방법과 (가) 시간
(b)는 런타임 실행을 컴파일 무엇

.

처럼 ....
은 무엇 현명한 단계됩니까?
컴파일러는 일반 정보 등을 저장 ...

사람은 샘플 코드로 나를 설명 할 수 있습니까?

감사합니다.

편집 : 모든 일반 정보를 삭제하는 유형 삭제와 같은 개념을 알고 있지만 일반 프로그램의 모든 단계를 알지 못합니다. 당신은 닷넷과 자바를 사용하는 경우

+2

Sun (Oracle) 사이트의 Generics 주제를 읽거나 인터넷 검색을 수행하는 것이 좋습니다. http://download.oracle.com/javase/tutorial/java/generics/index.html – Senthil

답변

0

http://jorudolph.wordpress.com/2010/04/21/net-generics-implementation/는 비교 & 대조보기를 제공합니다.

http://www.codeproject.com/KB/java/GenericsInJavaPartII.aspx는 구현의 의미를 보여주는 샘플 코드와 설명입니다.

간단히 언급 ....

파트 A :

컴파일러 ("웁니다")를 지운다 일반 비트 (따라서되는 ArrayList의 ArrayList로 변한다). 그런 다음 객체가 콜렉션 (예 : al.get (0))에서 빠져 나오면 컴파일러는 데이터 유형 (일명 "boxing")을 변환하는 코드를 삽입합니다 (al.get (0)을 (StackExchange) al.get (0)).

파트 B : 언어가 처음 출시 된 이후 자바

제네릭은 십년에 대해 구현 된 :

에는 파트 B. :

부품 Z가 없습니다. 결과적으로 이전 버전과의 호환성이라는 이름으로 Java의 제네릭은 구문 설탕으로 만 작용합니다. Syntactic sugar는 "이 코드를 직접 작성할 수도 있지만 컴파일러를 사용하면 바로 가기에 입력 할 수 있습니다."라고 말하는 좋은 방법입니다. 예를 들어, Java에서 제네릭이 나타나기 전에 (StackExchange) al.get (0)을 작성할 수 있습니다. 제네릭을 사용하는 경우 컴파일러는 단순히 코드를 삽입합니다.

4

Angelika Langer FAQ About Generics을 읽으면 모든 질문에 대한 답변을 찾을 수 있습니다.

The Java Programming Language 4th Edition 주제에 좋은 장을 포함한다.

물론 무료로 얻을 수있는 Java Language Specification보다 더 좋은 참조는 없습니다.

도서 Java Generics and Collections은 그 주제에 대해 아주 좋은 책이기도합니다. 책 here의 PDF 버전을 발견했습니다. 불행히도 단지 몇 페이지 만 포함합니다.