2009-05-28 4 views

답변

2

Java에서 Generics는 컴파일시에만 사용할 수 있습니다. 런타임시 일반 유형을 판별 할 수 없습니다. 이로써 제네릭 구현은 이전 버전의 JVM과 역 호환 될 수있었습니다.

제네릭은 컴파일 타임에만 사용할 수 있으므로 클래스 유형을 알고 있으면 리플렉션을 사용할 필요가 없습니다.

+1

비슷한 질문에 답할 것이므로 여기에 추가 할 것입니다. Java 컴파일러는 컴파일시 제네릭에 대한 유형 정보를 지 웁니다. 리플렉션은 런타임에 평가되므로 모든 유형 정보는 이미 지워졌으므로 대부분 무의미합니다. – Pesto

+1

사실이 아닙니다. http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/TypeLiteral.html – robson

+0

을 참조하십시오. Pesto : 메소드의 지워진 리턴 유형을 지우지 않습니다! –

1

지우기 유형에 Method을 일반화하는 것은 무리가 아닙니다. 그러나, 그것은 거의 이득으로 많은 노력이 될 것입니다. 리플렉션의 본질은 컴파일 타임에 타입을 알지 못한다는 것입니다. 그렇지 않으면 정적으로 링크 할 수 있습니다.

제네릭 형식이 반환되도록 새로운 API를 추가 할 수도 있습니다. 정보는 사용자가 전달한 인스턴스가 아니더라도 계속 메소드에 있습니다.

관련 문제