자바 반사 메커니즘 (부모 클래스 범 형 가 져 오기) getGeneric Superclass

1409 단어 자바
1. 우선, T. getClass () 나 T. class 는 모두 불법 입 니 다. T 는 일반적인 변수 이기 때 문 입 니 다. 
    하나의 유형의 유형 이 컴 파일 기간 에 확정 되 었 기 때문에 실행 기간 에 T 의 실제 유형 을 얻 을 수 없습니다.
2. 획득 방법 은:
Class  entityClass = (Class ) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; 

3. 예:
 public class Person {
 
 }
 public class Student extends Person {
 public static void main(String[] args) {
	 Student st=new Student();
	 Class clazz=st.getClass();
	 //getSuperclass()       
	 System.out.println(clazz.getSuperclass());
	 //getGenericSuperclass()         
	 //Type  Java                 。        、     、    、         。
	 Type type=clazz.getGenericSuperclass();
	 System.out.println(type);
	 //ParameterizedType     ,   
	  ParameterizedType p=(ParameterizedType)type;
	  //getActualTypeArguments          ,       
	  Class c=(Class) p.getActualTypeArguments()[0];
	  System.out.println(c);
	 }
 }

인쇄 결과:
 class com.test.Person
 com.test.Person
 class com.test.Student
테스트 에 의 하면 부모 클래스 의 일반적인 형식 을 가 져 올 수 있 지만, 클래스 가 실 현 된 인터페이스의 일반적인 형식 을 가 져 올 수 없습니다. 
이와 관련 된 글 은 다음 과 같다.http://www.blogjava.net/leisure/archive/2011/12/26/367185.html
                                  http://blog.csdn.net/z69183787/article/details/42142977
참고 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기