随笔博文

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

2022-12-06 12:55:33 michael007js 153

简介

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

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

TypeVariable<?>[] getTypeParameters()

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

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

下面是一个例子:

public class Main<K extends classA & interfaceB, V> {
classA<K>[][] 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());
}
}}//输出结果KV


首页
关于博主
我的博客
搜索