2010-06-25 4 views
3

제네릭 타입을 반환하는 메소드가 있습니다. 매개 변수로 이것을 제공하지 않고 <T>의 값을 검색하는 방법이 있습니까?요청에서 제네릭 타입을 얻으십시오

public <T> T getObject(String location, String method) 
{ 
    // ! Here I want to retrieve the class of T 
    Class<?> requestedClass = getMeTheClassThatWasRequested(); 

    return requestedClass; 
} 

어떤 방법이 있습니까?

답변

9

아니요, 형식 정보를 명시 적으로 전달해야합니다. Java는 컴파일시 모든 유형 정보를 버립니다. 이를 '유형 삭제'라고합니다. 이것은 collection 객체의 toArray 메소드가 T 타입의 배열을 반환하기 위해 T 타입의 배열을 필요로하는 이유이기도합니다. 타입 정보를 위해서만 그 입력 배열을 사용합니다.

2

Java generics는 컴파일 할 때에 만 사용할 수 있습니다. Class<?> 참조는 적절한 위치에 캐스트가 삽입 된 Class으로 컴파일됩니다 (예 : newInstance 메서드의 반환 값). 그래서 아니, 할 수 없습니다. 메서드를 사용할 때이를 generic 형식 변수로 메서드에 전달해야합니다.

관련 문제