TypeVariable、GenericDeclaration、Type、AnnotatedType

发布时间 2024-01-02 14:16:07作者: ccblblog

1、Typevariable类图

image

2、类签名

public interface TypeVariable<D extends GenericDeclaration> extends Type, AnnotatedElement {

3、涉及到的类

3.1 Type

public interface Type {
     // 获取类型名称
    default String getTypeName() {
        return toString();
    }
}

3.2 GenericDeclaration

public interface GenericDeclaration extends AnnotatedElement {
    // 以数组的方式返回按照泛型声明顺序的类型变量
    public TypeVariable<?>[] getTypeParameters();
}

Demo

public class TestA<T extends People, B, A> {
   public static void main(String[] args) {
        Class<TestA> aClass = TestA.class;
        TypeVariable<Class<TestA>>[] typeParameters = aClass.getTypeParameters();
        // 获取泛型生命中的类型变量(占位符的形式,不是实际的类型)
        for (TypeVariable<Class<TestA>> typeParameter : typeParameters) {
            System.out.println(typeParameter.getTypeName());
        }
    }
}

image

Class类类图

image

3.3 AnnotatedType

public interface AnnotatedType extends AnnotatedElement {
   // 获取标注元素类型
   public Type getType();
}

4、Typevariable接口中的方法

    // 获取边界
    Type[] getBounds();
    // 获取声明
    D getGenericDeclaration();
    // 变量名称
    String getName();
    // 获取标注元素的边界
    AnnotatedType[] getAnnotatedBounds();