一.说明
1.Type[] getGenericInterfaces
以Type的形式返回本类直接实现的接口.这样就包含了泛型参数信息
2.Class[] getInterfaces
返回本类直接实现的接口.不包含泛型参数信息
二.例子
1.接口
- public interface MyInterfaceA {
- public void sayHello();
- }
- public interface MyInterfaceB{
- public String print();
- }
- public interface MyInterfaceC<A,B> {
- public A getA();
- public B getB();
- }
2.Test.java
- import java.lang.reflect.Type;
- import java.lang.reflect.ParameterizedType;
- public class Test<A,B> implements MyInterfaceC<A,B>,MyInterfaceA,MyInterfaceB{
- private A a;
- private B b;
- //MyInterfaceC
- public A getA() {
- return a;
- }
- public B getB() {
- return b;
- }
- //MyInterfaceA
- public void sayHello() {
- }
- //MyInterfaceB
- public String print() {
- return "";
- }
- public static void main(String args[]) throws Exception{
- Type[] ts = Test.class.getGenericInterfaces();
- System.out.println("======getGenericInterfaces======:");
- for (Type t:ts) {
- System.out.println(t);
- if (ParameterizedType.class.isAssignableFrom(t.getClass())) {
- System.out.print("----------->getActualTypeArguments:");
- for (Type t1:((ParameterizedType)t).getActualTypeArguments()) {
- System.out.print(t1 + ",");
- }
- System.out.println();
- }
- }
- System.out.println();
- System.out.println("======getInterfaces======:");
- for (Class c:Test.class.getInterfaces()) {
- System.out.println(c.getName());
- }
- }
- }
输出结果:
======getGenericInterfaces======:
MyInterfaceC<A, B>
----------->getActualTypeArguments:A,B,
interface MyInterfaceA
interface MyInterfaceB
======getInterfaces======:
MyInterfaceC
MyInterfaceA
MyInterfaceB
相关推荐
6. **处理泛型**:虽然Java的泛型在编译后会被擦除,但反射可以通过`getGenericSuperclass()`和`getGenericInterfaces()`等方法获取到泛型信息。 7. **枚举和注解**:反射也可以用来处理枚举类型和注解,获取枚举...
在Java编程语言中,反射机制是一项强大的工具,它允许程序在运行时检查并操作类、接口、字段和方法的信息。这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象...
2. **获取类信息**:一旦有了Class对象,就可以获取类的各种信息,如类名(`getName()`)、父类(`getSuperclass()`)、接口(`getInterfaces()`)、构造器(`getConstructors()`)、方法(`getMethods()`)和字段...
例如,`getGenericSuperclass()`和`getGenericInterfaces()`可以获取类的泛型超类和接口,`getGenericParameterTypes()`和`getGenericReturnType()`可以获取方法的泛型参数和返回类型。 八、安全性与性能 11. 反射...
反射也可以处理泛型信息,虽然在运行时泛型信息会被擦除,但可以通过`getGenericInterfaces()`、`getGenericSuperclass()`、`getGenericParameterTypes()`等方法获取到泛型类型参数。 8. 注解处理: 反射可以用来...
- `Type[] getGenericInterfaces()`:获取类实现的接口的类型。 #### 三、Type在`java.lang.reflect`中的使用 - **Type子接口**: - `Class<T>`:表示特定类或接口的运行时表示形式。 - `ParameterizedType`:...
5. **泛型处理**:反射还可以处理泛型信息,虽然在运行时会丢失类型参数的具体信息,但可以通过`getGenericSuperclass()`和`getGenericInterfaces()`等方法获取到泛型声明。 6. **接口实现**:反射也支持检查类是否...
6. **泛型处理**:虽然Java的泛型在运行时被擦除,但反射可以提供一些关于类型参数的信息,如`getGenericSuperclass()`和`getGenericInterfaces()`方法。 7. **接口实现检查**:通过`isInstance()`方法,我们可以...
Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。这一机制的核心在于Java.lang.reflect包,它提供了Class、Constructor、Method、Field等一系列类,使得我们...
Java反射机制是Java语言提供的一种在运行时动态访问和操作类、对象、方法和属性的能力。通过反射,开发者可以在程序运行过程中获取类的信息,并能够创建对象、调用方法、修改属性等。这种强大的功能为Java开发提供了...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法的信息。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改类的行为。这个过程通常...
Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类的信息,包括类名、属性、方法等,并可以动态地创建对象和调用方法。反射在很多场景下非常有用,比如在框架开发、插件系统、元数据驱动编程等...
虽然Java泛型在编译后会被擦除,但反射仍可以提供一些关于泛型类型的信息,如`getGenericSuperclass()`和`getGenericInterfaces()`方法可获取带有类型参数的父类和接口信息。 七、异常处理 在使用反射时,需要注意...
Java泛型是Java编程语言中一个强大的特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。泛型的主要目标是提高代码的类型安全性和重用性,减少类型转换的麻烦,并在编译时捕获可能的类型错误。...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,甚至能够在运行时创建和操作类的对象。反射机制是通过`java.lang.reflect`包中的类和接口实现的,它为我们提供了对程序...
该包包含了用于获取和修改类、构造函数、方法和字段等对象的类和接口。下面将详细介绍其中几个重要的类及其使用方法。 ### Class类 `Class`类代表了Java中的一个类。每个加载到JVM中的类都会有一个对应的`Class`...
5. **处理泛型**:虽然Java的泛型在编译后会被擦除,但反射仍然可以提供关于泛型类型的信息,如`getGenericSuperclass()`和`getGenericInterfaces()`等方法。 6. **Java集合的类型安全**:在处理集合时,反射可以...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法等。本主题将深入探讨如何利用反射技术绕过编译器的一些限制,并介绍hashcode在高级应用中的用法。 ...