Java之getGenericSuperclass方法简解

目录

getGenericSuperclass方法简解

定义一个含泛型父类Father

定义一个继承了含泛型父类的子类Son

测试各种方法打印效果

getClass(自身类)

getSuperclass(父类)

getGenericSuperclass(带有泛型的父类,原返回值类型为Type,需要强转类型)

getActualTypeArguments(泛型类)


getGenericSuperclass方法简解

  • 定义一个含泛型父类Father

package com.mark.test;

public class Father {

}
  • 定义一个继承了含泛型父类的子类Son

public class Son extends Father {

}
  • 测试各种方法打印效果

public class ClassTest {
	
	@Test
	public void test(){
		Son son = new Son();
		Class clazz = son.getClass();
		System.out.println("---Son extends Father---");
		System.out.println("自己类:" + clazz);
		System.out.println("父类:" + clazz.getSuperclass());
		System.out.println("带有泛型的父类:" + clazz.getGenericSuperclass());
		
		//ParameterizedType参数化类型,即泛型 
		ParameterizedType  pt = (ParameterizedType) clazz.getGenericSuperclass();
		Type type = pt.getActualTypeArguments()[0];
		System.out.println("强转类型后获得类型:" + type);
	}
}
---Son extends Father---
自己类                 :class com.mark.test.Son
父类                   :class com.mark.test.Father
带有泛型的父类          :com.mark.test.Father
强转类型后获得类型   :class com.mark.test.Son

getClass(自身类)

getSuperclass(父类)

getGenericSuperclass(带有泛型的父类,原返回值类型为Type,需要强转类型)

//ParameterizedType参数化类型,即泛型 
           ParameterizedType  pt = (ParameterizedType) clazz.getGenericSuperclass();

getActualTypeArguments(泛型类)

    Type type = pt.getActualTypeArguments()[0];

你可能感兴趣的:(JavaSE)