美文网首页
获取泛型的元素(20.6.3)

获取泛型的元素(20.6.3)

作者: 剑道_7ffc | 来源:发表于2020-06-19 15:27 被阅读0次

基本使用

public class FetchGenericItem {
    private Collection<String> names;

    public static void main(String[] args) throws Exception {
        FetchGenericItem fetchGenericItem = new FetchGenericItem();
        //场景1:获取成员变量的泛型元素
        Field field = fetchGenericItem.getClass().getDeclaredField("names");
        System.out.println(fetchGenericItem.getActualTypeFieldType(field.getGenericType()));//class java.lang.String

        //场景2:获取方法参数的泛型元素
        Method method = fetchGenericItem.getClass().getDeclaredMethod("setNames", Collection.class);
        Type[] genericParameterTypes = method.getGenericParameterTypes();
        for (Type genericParameterType : genericParameterTypes) {
            System.out.println(fetchGenericItem.getActualTypeFieldType(genericParameterType));//class java.lang.String
        }
    }

    public FetchGenericItem setNames(Collection<String> names) {
        this.names = names;
        return this;
    }

    /**
     * 获取泛型类型
     */
    private Type getActualTypeFieldType(Type elType) {

        if (elType instanceof ParameterizedType) {
            ParameterizedType parameterizedType = (ParameterizedType) elType;
            Type[] types = parameterizedType.getActualTypeArguments();
            if (types.length == 1)
                return parameterizedType.getActualTypeArguments()[0];
            else
                return null;
        } else
            return null;
    }
}

Type

type类型是所有类型的父类


image.png

相关文章

  • 获取泛型的元素(20.6.3)

    基本使用 Type type类型是所有类型的父类

  • java_泛型

    泛型:jdk1.5新特性 为什么要用泛型(解决元素存储安全,解决获取元素需要进行强制转换,代码复用动态指定数据类型...

  • 泛型

    1.解决元素存储安全性问题 2.解决获取数据元素时,需要类型强转的问题。 静态方法中不能使用类的泛型。 如果泛型是...

  • 泛型

    泛型:规定了某个集合只可以存放特定类型的对象,会在编译期间进行类型检查,可以直接按指定类型获取集合元素。 泛型的声...

  • Java 完美获取泛型类型(包含嵌套的泛型)

    完美获取泛型类型(包含嵌套多层的泛型) 1. 工具类 获取泛型类型工具类 2. 使用方法 2.1. 集成接口带有泛...

  • Java-泛型

    关键字:泛型、类型擦除、泛型实现、泛型缺点、泛型运用。 1.不使用泛型会怎么样? 例子1,int、String元素...

  • Java自学-集合框架 泛型Generic

    ArrayList上使用泛型 步骤 1 : 泛型 Generic 不指定泛型的容器,可以存放任何类型的元素指定了泛...

  • 通过反射获取泛型

    获取泛型参数的信息:1、通过Field.getGenericType()方法获取到Type类型(该对象中包含了泛型...

  • Java基础

    1、泛型 jdk1.5增加了泛型支持很大程度是为了让集合记住其元素的类型。知识点:泛型类、泛型接口、类型通配符、泛...

  • Java泛型的原始类型

    众所周知,Java中的泛型在编译期被擦除,那有没有办法在运行时获取到泛型的原始类型呢?有的。 获取泛型类型 如果定...

网友评论

      本文标题:获取泛型的元素(20.6.3)

      本文链接:https://www.haomeiwen.com/subject/xjlvxktx.html