Java中与泛型相关的接口 之 GenericDeclaration

在阅读本文之前可以先阅读以下三篇,以便对Java中的泛型有一个全局的认识:

  1. Java中与泛型相关的接口 之 术语定义
  2. Java中与泛型相关的接口 之 综述
  3. Type及其子接口的来历

简介

GenericDeclaration接口继承了AnnotatedElement接口,是所有“可以声明(定义)范型变量”的实体(如Class,Constructor,Method)的公共接口。也就是说只有实现了这个接口的才能在对应“实体”上声明“范型变量”。所谓范型变量就是或者, 也就是TypeVariable这个接口对应的对象,TypeVariable中的D是继承自 GenericDeclaration的,用来通过范型变量(TypeVariable)反向获取拥有这个变量的GenericDeclaration。

目前实现GenericDeclaration接口的类包括Class(类), Method(方法), Constructor(构造器),也就是说只能在这几种对象上进行范型变量的声明(定义)。GenericDeclaration的直接实现子类没有Field类,所以属性上面不能定义类型变量。GenericDeclaration的接口方法getTypeParameters用来逐个获取该GenericDeclaration的“范型变量”声明。

TypeVariable[] getTypeParameters()

获取当前“实体”上声明的“泛型变量"。

按被声明的顺序返回一个TypeVariable对象的数组,其中TypeVariable对象是由GenericDeclaration对象进行声明的。如果底层没有使用GenericDeclaration声明“范型变量”,那么返回一个长度为0的数组。

下面是一个例子:

public class Main {
    classA[][] key;
    V value;
    public static void main(String[] args) throws Exception{
        TypeVariable[] types = Main.class.getTypeParameters();
        for(TypeVariable type : types){
            System.out.println(type.getName());
        }
    }
}
//输出结果
K
V

你可能感兴趣的:(Java中与泛型相关的接口 之 GenericDeclaration)