정적 메서드에서 실제 제네릭 유형의 클래스 개체 가져 오기

온 드라

제네릭 정적 메서드가 있고 삽입 된 실제 제네릭 형식의 클래스 개체를 반환하고 싶습니다.

나는 이것을 다음과 같이 시도했다.

@SuppressWarnings("unchecked")
public static <T> Class<T> getClassType() {

    Method thisMethod;
    try {
        thisMethod = CommonTools.class.getMethod("getClass", new Class<?>[0]);
    } catch (Exception ex) {
        //ErrorLog.error(ex.getMessage(), ex);
        return null;
    }

    Type returnType = thisMethod.getGenericReturnType();
    Type tType = returnType.getClass().getGenericSuperclass();
    ParameterizedType parameterizedType = (ParameterizedType) tType;
    Class<T> clazz = (Class<T>) parameterizedType.getActualTypeArguments()[0];

    return clazz;
}

이것에 대한 내 영감은 Google 코드 모르 피아 라이브러리에서 발견되었으며 다음과 같은 것을 사용했습니다.

(((Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]))

내 코드와 코드의 차이점은 클래스에서 제네릭 유형을 찾기 위해 호출한다는 것입니다. 메소드에서 사용하고 싶습니다.

내 코드가 작동하지 않고 (Class) 변환 라인에 속합니다.

정적 메서드에서 현재 제네릭 유형을 얻는 방법에 대한 아이디어가 있습니까?

감사

win_wave

이거 작동 안 할거야. getClass기본적으로 return type이있는 method를 얻고 Class<CommonTools>그 후에 TypeArgument가 CommonTools이기 때문에을 getActualTypeArguments반환하는을 호출 Class<CommonTools>합니다.

전화 Class<CommonTools> ct = getClassType();하면 작동하지만 그러한 정보를 가질 필요가 없습니다.

내가 아는 한 JVM은 런타임에 모든 일반 정보를 지우므로 해당 정보를 얻을 수있는 방법이 없습니다. 가장 간단한 해결책은 생성시 인스턴스를 CommonTools가져와 Class<T>반환하지만 그렇게 일반적이지 않은 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

정적 메서드에서 실제 제네릭 유형의 클래스 개체 가져 오기

분류에서Dev

제네릭 유형 인스턴스를 가져 오지 않는 제네릭 메서드 내에서 구체적인 클래스 속성 읽기

분류에서Dev

제네릭이 아닌 정적 클래스의 제네릭 오버로드 된 메서드에서 RuntimeMethodInfo 가져 오기

분류에서Dev

개방형 제네릭을 포함하여 제네릭 서비스 유형의 모든 구현 가져 오기

분류에서Dev

.NET 제네릭 메서드에서 실제 매개 변수 유형을 가져 오는 방법

분류에서Dev

프록시 클래스 내에서 제네릭 메서드의 이름 가져 오기

분류에서Dev

제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

분류에서Dev

제네릭 변수의 매개 변수화 된 유형 클래스 가져 오기

분류에서Dev

객체가 제네릭 기본 클래스의 인스턴스인지, 제네릭 유형인지 확인

분류에서Dev

제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

분류에서Dev

제네릭 유형이 1 개인 클래스에서 제네릭 유형이 2 개인 메서드

분류에서Dev

제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

분류에서Dev

제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

분류에서Dev

하나의 클래스에서만 제네릭 유형 설정

분류에서Dev

제네릭을 사용하여 객체에서 기본 유형 가져 오기

분류에서Dev

식, 정적 메서드 및 기본 개체를 사용하여 클래스의 속성 이름 가져 오기

분류에서Dev

C # 제네릭 인 개체 내부의 개체 가져 오기

분류에서Dev

제네릭 반환 유형을 사용하여 메서드에서 구체적인 클래스의 인스턴스를 반환하는 방법

분류에서Dev

제네릭 클래스의 정적 Create () 메서드에 대한 압축 구문?

분류에서Dev

제네릭에서 인터페이스의 키 가져 오기

분류에서Dev

C #의 제네릭 클래스가있는 제네릭 메서드

분류에서Dev

클래스 인스턴스에서 Graphics로 제어 개체 가져 오기

분류에서Dev

클래스 개체 유형에서 DbSet 이름 가져 오기

분류에서Dev

Spring RestTemplate : 제네릭 클래스에서 매개 변수 유형을 정의하는 방법

분류에서Dev

제네릭에서 ParameterizedType 유형 가져 오기

분류에서Dev

식에 사용할 제네릭 유형의 속성 유형 가져 오기

분류에서Dev

구체적인 클래스를 스칼라의 제네릭 메서드 인스턴스화

분류에서Dev

제네릭 클래스의 호출 된 메서드와 동일한 T가있는 매개 변수로 C # 제네릭 클래스

분류에서Dev

제네릭을 사용하여 클래스의 인스턴스 가져 오기

Related 관련 기사

  1. 1

    정적 메서드에서 실제 제네릭 유형의 클래스 개체 가져 오기

  2. 2

    제네릭 유형 인스턴스를 가져 오지 않는 제네릭 메서드 내에서 구체적인 클래스 속성 읽기

  3. 3

    제네릭이 아닌 정적 클래스의 제네릭 오버로드 된 메서드에서 RuntimeMethodInfo 가져 오기

  4. 4

    개방형 제네릭을 포함하여 제네릭 서비스 유형의 모든 구현 가져 오기

  5. 5

    .NET 제네릭 메서드에서 실제 매개 변수 유형을 가져 오는 방법

  6. 6

    프록시 클래스 내에서 제네릭 메서드의 이름 가져 오기

  7. 7

    제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

  8. 8

    제네릭 변수의 매개 변수화 된 유형 클래스 가져 오기

  9. 9

    객체가 제네릭 기본 클래스의 인스턴스인지, 제네릭 유형인지 확인

  10. 10

    제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

  11. 11

    제네릭 유형이 1 개인 클래스에서 제네릭 유형이 2 개인 메서드

  12. 12

    제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

  13. 13

    제네릭 클래스의 메서드가 지정된 유형을 반환하지 않습니다. 왜?

  14. 14

    하나의 클래스에서만 제네릭 유형 설정

  15. 15

    제네릭을 사용하여 객체에서 기본 유형 가져 오기

  16. 16

    식, 정적 메서드 및 기본 개체를 사용하여 클래스의 속성 이름 가져 오기

  17. 17

    C # 제네릭 인 개체 내부의 개체 가져 오기

  18. 18

    제네릭 반환 유형을 사용하여 메서드에서 구체적인 클래스의 인스턴스를 반환하는 방법

  19. 19

    제네릭 클래스의 정적 Create () 메서드에 대한 압축 구문?

  20. 20

    제네릭에서 인터페이스의 키 가져 오기

  21. 21

    C #의 제네릭 클래스가있는 제네릭 메서드

  22. 22

    클래스 인스턴스에서 Graphics로 제어 개체 가져 오기

  23. 23

    클래스 개체 유형에서 DbSet 이름 가져 오기

  24. 24

    Spring RestTemplate : 제네릭 클래스에서 매개 변수 유형을 정의하는 방법

  25. 25

    제네릭에서 ParameterizedType 유형 가져 오기

  26. 26

    식에 사용할 제네릭 유형의 속성 유형 가져 오기

  27. 27

    구체적인 클래스를 스칼라의 제네릭 메서드 인스턴스화

  28. 28

    제네릭 클래스의 호출 된 메서드와 동일한 T가있는 매개 변수로 C # 제네릭 클래스

  29. 29

    제네릭을 사용하여 클래스의 인스턴스 가져 오기

뜨겁다태그

보관