zoukankan      html  css  js  c++  java
  • java获取泛型类型

    泛型是自java1.5以后引入的概念,主要为了弥补java语言强类型特性带来的编程上的不便。

    泛型的本质是一种参数化类型,对应的java中的类ParameterizedType.java所以,要获取运行时的泛型类型,只要获取到ParameterizedTypede 的实例即可。

    Simple f = new Simple();
            try {
                Method m = f.getClass().getDeclaredMethod("m",null);
                Type type = m.getGenericReturnType();
                if(ParameterizedType.class.isAssignableFrom(type.getClass())){
                    Stream.of(((ParameterizedType)type).getActualTypeArguments()).forEach(type1 -> {
                        System.out.println(type1+",");
                    });
                }
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
    public class Simple {
        public List<String> m(){
            return new ArrayList<>();
        }
    }

    如果是Field的话可以调用getGenericType获取类型实例,进而判断是否为参数化类型。

  • 相关阅读:
    [Violet]蒲公英
    CF535-Div3
    逛公园
    exgcd
    线段树套线段树
    Luogu P2730 魔板 Magic Squares
    fhqtreap
    AtCoder Beginner Contest 115
    关于这个博客
    智障错误盘点
  • 原文地址:https://www.cnblogs.com/foreveravalon/p/7064534.html
Copyright © 2011-2022 走看看