`

AVA-反射-getGenericSuperclass()介绍

阅读更多
 1 public class Person<T> {
 2 
 3 }
 4 
 5 import java.lang.reflect.ParameterizedType;
 6 import java.lang.reflect.Type;
 7 
 8 public class Student extends Person<Student> {
 9 public static void main(String[] args) {
10 Student st=new Student();
11 Class clazz=st.getClass();
12 //getSuperclass()获得该类的父类
13 System.out.println(clazz.getSuperclass());
14 //getGenericSuperclass()获得带有泛型的父类
15 //Type是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
16 Type type=clazz.getGenericSuperclass();
17 System.out.println(type);
18 //ParameterizedType参数化类型,即泛型
19 ParameterizedType p=(ParameterizedType)type;
20 //getActualTypeArguments获取参数化类型的数组,泛型可能有多个
21 Class c=(Class) p.getActualTypeArguments()[0];
22 System.out.println(c);
23 }
24 }
25 
26 打印结果:
27 
28 class com.test.Person
29 com.test.Person<com.test.Student>
30 class com.test.Student
分享到:
评论

相关推荐

    Java反射机制学习(二)

    虽然Java的泛型在编译后会被擦除,但在反射中我们仍然可以通过`getGenericInterfaces()`和`getGenericSuperclass()`获取到泛型信息。 7. **应用案例**: - 插件化开发:通过反射加载未知的插件类,实现模块间的...

    Day43 Java反射(二)

    - 通过`Class.getGenericSuperclass()`或`Class.getGenericInterfaces()`获取带有泛型的超类或接口。 2. **解析泛型信息**: - 使用`ParameterizedType`接口获取泛型参数的类型。 #### 反射的实际应用 1. **...

    Java反射机制学习总结

    反射也可以处理泛型信息,虽然在运行时泛型信息会被擦除,但可以通过`getGenericInterfaces()`、`getGenericSuperclass()`、`getGenericParameterTypes()`等方法获取到泛型类型参数。 8. 注解处理: 反射可以用来...

    java反射基本方法测试

    例如,`getGenericSuperclass()`和`getGenericInterfaces()`可以获取类的泛型超类和接口,`getGenericParameterTypes()`和`getGenericReturnType()`可以获取方法的泛型参数和返回类型。 八、安全性与性能 11. 反射...

    反射机制.rar

    7. **泛型处理**: 虽然Java反射不直接支持泛型,但通过`getGenericSuperclass()`和`getGenericInterfaces()`等方法可以获取到带有类型信息的泛型声明,从而间接地处理泛型。 8. **枚举和注解**: 反射同样可以用于...

    Java反射相当的文档及示例

    6. **泛型处理**:虽然Java的泛型在运行时被擦除,但反射可以提供一些关于类型参数的信息,如`getGenericSuperclass()`和`getGenericInterfaces()`方法。 7. **接口实现检查**:通过`isInstance()`方法,我们可以...

    北大青鸟ACCP6.0 第三学期 Y2 JAVA方向 reflection 反射

    虽然Java泛型在编译后会被擦除,但反射仍可以提供一些关于泛型类型的信息,如`getGenericSuperclass()`和`getGenericInterfaces()`方法可获取带有类型参数的父类和接口信息。 七、异常处理 在使用反射时,需要注意...

    Java反射机制(推荐)

    7. **泛型与反射**:虽然Java的泛型在编译后会被擦除,但反射仍然可以获取到泛型的信息,例如`getGenericSuperclass()`和`getGenericInterfaces()`可以获取到父类和接口的泛型类型。 8. **注解处理**:反射也可以...

    类的反射机制

    6. **处理泛型**:虽然Java的泛型在编译后会被擦除,但反射可以通过`getGenericSuperclass()`和`getGenericInterfaces()`等方法获取到泛型信息。 7. **枚举和注解**:反射也可以用来处理枚举类型和注解,获取枚举...

    java反射

    ### Java反射机制详解 #### 一、引言 在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时访问类的信息,并能够动态地创建对象、调用方法以及获取字段值等。这种能力对于框架设计、代码...

    反射与泛型

    Type genericSuperclass = clazz.getGenericSuperclass(); if (genericSuperclass instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass; Type[] ...

    java反射及动态代理

    - `Type getGenericSuperclass()`:获取类的直接超类的类型。 - `Type[] getGenericInterfaces()`:获取类实现的接口的类型。 #### 三、Type在`java.lang.reflect`中的使用 - **Type子接口**: - `Class&lt;T&gt;`:...

    Java利用反射获取类信息

    `Class`对象的`isInterface()`判断是否为接口,`getGenericSuperclass()`和`getGenericInterfaces()`获取父类或接口的泛型类型。 7. 注解处理: 反射提供了访问注解的能力,`Class`、`Method`、`Field`等都提供了`...

    java中的反射reflect

    尽管Java的类型擦除导致编译后的泛型信息丢失,但反射可以通过`Class`对象的`getGenericSuperclass()`或`getGenericInterfaces()`方法获取到泛型的实际类型参数。 `TestSingleton.java`和`Singleton.java`则可能与...

    Java反射机制

    5. **处理泛型**:虽然Java的泛型在编译后会被擦除,但反射仍然可以提供关于泛型类型的信息,如`getGenericSuperclass()`和`getGenericInterfaces()`等方法。 6. **Java集合的类型安全**:在处理集合时,反射可以...

    博客《反射(2):泛型相关周边信息获取》对应源码

    例如,我们可以使用 `Class&lt;T&gt;.getGenericSuperclass()` 或 `Class&lt;T&gt;.getGenericInterfaces()` 来获取类的父类或接口的泛型信息。这些方法返回的是 `Type` 接口的实现,如 `ParameterizedType`,`WildcardType` 等...

    反射处理java泛型_.docx

    ParameterizedType parameterizedType = (ParameterizedType) FooChild.class.getGenericSuperclass(); Class&lt;?&gt; genericClass = (Class) parameterizedType.getActualTypeArguments()[0]; ``` 这两种方法都可以...

    利用反射绕过编译器和hashcode高级应用

    本主题将深入探讨如何利用反射技术绕过编译器的一些限制,并介绍hashcode在高级应用中的用法。 首先,让我们理解反射的基本概念。在Java中,反射提供了一种方式,使我们能够在运行时动态地获取类的信息(如类名、...

Global site tag (gtag.js) - Google Analytics