Java反射之getGenericSuperclass()用法

摘要:
它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。

父类

packagecom.itheima.mytest;
publicclassPerson<T1,T2>{
}

子类

packagecom.itheima.mytest;
importjava.lang.reflect.ParameterizedType;
importjava.lang.reflect.Type;
publicclassStudentextendsPerson<Integer,String>{
@SuppressWarnings("rawtypes")
publicstaticvoidmain(String[]args){
Studentstudent=newStudent();
//getClass()获得该类的类类型(即类型变量)
Classclazz=student.getClass();
//getSuperclass()获得该类的父类
System.out.println(clazz.getSuperclass());
//getGenericSuperclass()获得该类带有泛型的父类
Typetype=clazz.getGenericSuperclass();
System.out.println(type);
//Type是Java编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
//ParameterizedType参数化类型,即泛型
//将Type转化为参数化类型(即泛型)
ParameterizedTypep=(ParameterizedType)type;
//getActualTypeArguments()获取参数化类型的数组,泛型可能有多个
Type[]actualTypeArguments=p.getActualTypeArguments();
//将Type转化为类型变量(即Class)
Classc1=(Class)actualTypeArguments[0];
Classc2=(Class)actualTypeArguments[1];
System.out.println(c1);
System.out.println(c2);
}
}

运行结果

classcom.itheima.mytest.Person
com.itheima.mytest.Person<java.lang.Integer,java.lang.String>
classjava.lang.Integer
classjava.lang.String

参考链接:
https://blog.csdn.net/qq_26424655/article/details/71515741

免责声明:文章转载自《Java反射之getGenericSuperclass()用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux Shell 高级编程技巧2----shell工具JS toFixed 四舍六入五成双下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c#泛型作为返回类型的写法

 没有技术含量,已经知道的就直接无视了吧。我的本意是要将一个实体参数转换为泛型对象T返回,所以初次代码就写成下面这样: 代码         public static T GetObj<T>(Employee model)        {            T result = default(T);            if (m...

delphi新语法之泛型实现的对象池模板

现在的DELPHI因为支持泛型的语法,所以也能支持模板编程了。 // 标准模板 unit UntPools; interface uses Classes, SysUtils, UntThreadTimer; type { 这是一个对像池, 可以池化所有 TObject 对像 } { 用法: 在一个全局的地方定义 var Pooler: TObjectP...

如何正确使用Java泛型

前言 Java 1.5之前是没有泛型的,以前从集合中读取每个对象都必须先进行转换,如果不小心存入集合中对象类型是错的,运行过程中转换处理会报错。有了泛型之后编译器会自动帮助转换,使程序更加安全,但是要正确使用泛型才能取得事半功倍的效果。 本文主要从不要使用原生类型,泛型方法,限制通配符,类型安全的异构容器四个部分来说明如何正确使用Java泛型。主要参考资...

聊一聊Java泛型的擦除

最近看了《thinking in java》的第十五章泛型,感觉有些东西需要记录下来。 泛型是Java SE5才被引入的概念,现在我的工作中泛型主要使用在集合,这样可以知道set()和get()的类型(类型检查是在编译阶段,可以使用反射绕过编译),而不必再进行额外的转型操作。 今天,我们主要是来聊一聊Java泛型的擦除。 或许,你对Java泛型的擦除的概念...

XStream xml 解析框架使用笔记

1. xml的标签可以映射为类、类成员变量 2. 有子标签的标签映射为类,没有子标签的便签映射为类成员变量 3. 类名、类成员变量名如与标签名不一致需要通过注解或代码设置别名 1 //类名 2 @XStreamAlias("Info") 3 xStream.aliasType("Info", YLTextInfo.class); 4 //类成员变量名 5...

Java中的通配符

一、通配符概念 其实.上很多技术点都是为了解决某一问题而出现的,那么我们在学习的过程中可以先提出问题,然后在使用我们的技术去解决。 DEMO:观察问题 以上代码可以正常执行,但是如果泛型类中的类型改变之后发现了方法中的参数的泛型也需要改变,这就说明了fun方法依赖Person的泛型,这也是耦合度较高的一种体现,此时我们可以在方法的参数中使用通配符代替具体...