Person.java

package test;

public class Person<T> {
	
}

Student.java

package test;

public class Student extends Person<Student> {
	
}

testmain.java

package test;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class testmain {
	
	public static void main(String[] args) {
		Student student = new Student();
		Class oriclass = student.getClass();
		/**
		 * getSuperclass() 获取该类的父类
		 */
		System.out.println(oriclass.getSuperclass());
		
		/**
		 * getGenericSuperclass() 获取带有泛型的父类
		 * Type 是 java 编译语言中所有类型的公共高级接口,它们包括 原始类型,参数化类型,数组类型,类型变量和基本类型
		 */
		Type type = oriclass.getGenericSuperclass();
		System.out.println(type);
		
		/**
		 * ParameterizedType参数化类型,即泛型  
		 */
		ParameterizedType p = (ParameterizedType)type;
		/**
		 * getActualTypeArguments获取参数化类型的数组,泛型可能有多个 
		 */
		Class c = (Class)p.getActualTypeArguments()[0];
		System.out.println(c);
		
	}
}

posted on 2016-12-06 00:39  新猪先生  阅读(287)  评论(0编辑  收藏  举报