`
zzc1684
  • 浏览: 1229255 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

类方法学习四:getGenericInterfaces,getInterfaces

阅读更多

一.说明

1.Type[] getGenericInterfaces

以Type的形式返回本类直接实现的接口.这样就包含了泛型参数信息

2.Class[] getInterfaces

返回本类直接实现的接口.不包含泛型参数信息

二.例子

1.接口

  1. public interface MyInterfaceA {  
  2.   
  3.   public void sayHello();  
  4.   
  5. }  
  6.   
  7. public interface MyInterfaceB{  
  8.   
  9.   public String print();  
  10.   
  11. }  
  12.   
  13. public interface MyInterfaceC<A,B> {  
  14.   
  15.   public A getA();  
  16.   
  17.   public B getB();  
  18.   
  19. }  

2.Test.java

  1. import java.lang.reflect.Type;  
  2.   
  3. import java.lang.reflect.ParameterizedType;  
  4.   
  5.   
  6.   
  7. public class Test<A,B> implements MyInterfaceC<A,B>,MyInterfaceA,MyInterfaceB{  
  8.   
  9.   private A a;  
  10.   
  11.   private B b;  
  12.   
  13.   //MyInterfaceC  
  14.   
  15.   public A getA() {  
  16.   
  17.     return a;  
  18.   
  19.   }  
  20.   
  21.   public B getB() {  
  22.   
  23.     return b;  
  24.   
  25.   }  
  26.   
  27.   //MyInterfaceA  
  28.   
  29.   public void sayHello() {  
  30.   
  31.   }  
  32.   
  33.   //MyInterfaceB  
  34.   
  35.   public String print() {  
  36.   
  37.     return "";  
  38.   
  39.   }  
  40.   
  41.   
  42.   
  43.   public static void main(String args[]) throws Exception{  
  44.   
  45.     Type[] ts = Test.class.getGenericInterfaces();  
  46.   
  47.       
  48.   
  49.     System.out.println("======getGenericInterfaces======:");  
  50.   
  51.     for (Type t:ts) {  
  52.   
  53.       System.out.println(t);  
  54.   
  55.         
  56.   
  57.       if (ParameterizedType.class.isAssignableFrom(t.getClass())) {  
  58.   
  59.         System.out.print("----------->getActualTypeArguments:");  
  60.   
  61.         for (Type t1:((ParameterizedType)t).getActualTypeArguments()) {  
  62.   
  63.           System.out.print(t1 + ",");  
  64.   
  65.         }  
  66.   
  67.         System.out.println();  
  68.   
  69.       }  
  70.   
  71.     }  
  72.   
  73.       
  74.   
  75.     System.out.println();  
  76.   
  77.     System.out.println("======getInterfaces======:");  
  78.   
  79.     for (Class c:Test.class.getInterfaces()) {  
  80.   
  81.       System.out.println(c.getName());  
  82.   
  83.     }  
  84.   
  85.   }  
  86.   
  87. }  

输出结果:

======getGenericInterfaces======:

MyInterfaceC<A, B>

----------->getActualTypeArguments:A,B,

interface MyInterfaceA

interface MyInterfaceB

======getInterfaces======:

MyInterfaceC

MyInterfaceA

MyInterfaceB

分享到:
评论

相关推荐

    类的反射机制

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

    Java反射机制学习(二)

    在Java编程语言中,反射机制是一项强大的工具,它允许程序在运行时检查并操作类、接口、字段和方法的信息。这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象...

    Java反射机制(推荐)

    2. **获取类信息**:一旦有了Class对象,就可以获取类的各种信息,如类名(`getName()`)、父类(`getSuperclass()`)、接口(`getInterfaces()`)、构造器(`getConstructors()`)、方法(`getMethods()`)和字段...

    java反射基本方法测试

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

    Java反射机制学习总结

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

    java反射及动态代理

    - `Type[] getGenericInterfaces()`:获取类实现的接口的类型。 #### 三、Type在`java.lang.reflect`中的使用 - **Type子接口**: - `Class&lt;T&gt;`:表示特定类或接口的运行时表示形式。 - `ParameterizedType`:...

    Java Reflection In Action 源代码

    5. **泛型处理**:反射还可以处理泛型信息,虽然在运行时会丢失类型参数的具体信息,但可以通过`getGenericSuperclass()`和`getGenericInterfaces()`等方法获取到泛型声明。 6. **接口实现**:反射也支持检查类是否...

    Java反射相当的文档及示例

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

    反射机制.rar

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法等对象。这一机制的核心在于Java.lang.reflect包,它提供了Class、Constructor、Method、Field等一系列类,使得我们...

    Day43 Java反射(二)

    Java反射机制是Java语言提供的一种在运行时动态访问和操作类、对象、方法和属性的能力。通过反射,开发者可以在程序运行过程中获取类的信息,并能够创建对象、调用方法、修改属性等。这种强大的功能为Java开发提供了...

    Java利用反射获取类信息

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法的信息。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改类的行为。这个过程通常...

    java中的反射reflect

    Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类的信息,包括类名、属性、方法等,并可以动态地创建对象和调用方法。反射在很多场景下非常有用,比如在框架开发、插件系统、元数据驱动编程等...

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

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

    Java泛型_Java中的泛型结构_

    Java泛型是Java编程语言中一个强大的特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。泛型的主要目标是提高代码的类型安全性和重用性,减少类型转换的麻烦,并在编译时捕获可能的类型错误。...

    Java反射及动态代理

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,甚至能够在运行时创建和操作类的对象。反射机制是通过`java.lang.reflect`包中的类和接口实现的,它为我们提供了对程序...

    java反射机制的研究的文档

    该包包含了用于获取和修改类、构造函数、方法和字段等对象的类和接口。下面将详细介绍其中几个重要的类及其使用方法。 ### Class类 `Class`类代表了Java中的一个类。每个加载到JVM中的类都会有一个对应的`Class`...

    Java反射机制

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

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

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法等。本主题将深入探讨如何利用反射技术绕过编译器的一些限制,并介绍hashcode在高级应用中的用法。 ...

Global site tag (gtag.js) - Google Analytics