Java之getGenericSuperclass方法简解

目录

getGenericSuperclass方法简解

定义一个含泛型父类Father

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

测试各种方法打印效果

getClass(自身类)

getSuperclass(父类)

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

getActualTypeArguments(泛型类)


getGenericSuperclass方法简解

  • 定义一个含泛型父类Father<T>

package com.mark.test;

public class Father<T> {

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

public class Son extends Father<Son> {

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

public class ClassTest {
	
	@Test
	public void test(){
		Son son = new Son();
		Class clazz = son.getClass();
		System.out.println("---Son extends Father<Son>---");
		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("强转类型后获得<T>类型:" + type);
	}
}
---Son extends Father<Son>---
自己类                 :class com.mark.test.Son
父类                   :class com.mark.test.Father
带有泛型的父类          :com.mark.test.Father<com.mark.test.Son>
强转类型后获得<T>类型   :class com.mark.test.Son

getClass(自身类)

getSuperclass(父类)

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

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

getActualTypeArguments(泛型类)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值