栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 泛型工具类, 获取类的泛型类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 泛型工具类, 获取类的泛型类型

直接上代码


public class ParameterizedTypeUtils {


    
    public static Class get(Class clazz,int index){
        ParameterizedType aClass = (ParameterizedType) clazz.getGenericSuperclass();
        Type[] actualTypes = aClass.getActualTypeArguments();
        return ((Class) actualTypes[index]);
    }

    
    public static Class getByType(Class clazz,Class type){
        ParameterizedType aClass = (ParameterizedType)clazz.getGenericSuperclass();
        Type[] actualTypes = aClass.getActualTypeArguments();
        for (Type actualType : actualTypes) {
            Class actual = ((Class) actualType);
            if (type.isAssignableFrom(actual)) {
                return actual;
            }
        }
        return null;
    }
}

使用方法

  • 根据索引
List list = new List();
ParameterizedTypeUtils.get(list.getClass(),0) // String
  • 根据类型
class Person{}
class ZhangSan{}
class A{}
A a = new A();
ParameterizedTypeUtils.get(a.getClass(),Person.class) // ZhangSan

这里注意,不要获取未实例化对象的类的泛型,会直接得出泛型本身
例如泛型为 T, 那也只能获取到 T,不会是某个具体类型。

class A{}
ParameterizedTypeUtils.get(A.class,0) // T
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号