Java -- 获取实现接口的泛型的参数化类型和实际类型参数
2018-04-02 10:35
429 查看
前言:在向上抽取功能时可能会有需要获取到实现接口的实际泛型参数类型这样的需求,分享一下自己实现的方法。
一、Java 代码
直接上代码,代码上有注释,对API做了相应的解释。
一、Java 代码
直接上代码,代码上有注释,对API做了相应的解释。
public BasicAction(){ try { //获取子类字节码文件对象,this代表的是子类对象。 Class clazz = this.getClass(); //获取子类所属接口的参数化类型,cn.xxx.xxx.BasicAction<cn.xxx.xxx.Standard> Type type = clazz.getGenericSuperclass(); //因为type是顶级接口没有定义任何方法,所以需要强转为子接口ParameterizedType ParameterizedType parameterizedType = (ParameterizedType) type; //通过子接口定义的getActualTypeArguments方法获取到实际参数类型,<cn.xxx.xxx.Standard> //返回参数为数组,因为Java中接口可以多实现 Type[] types = parameterizedType.getActualTypeArguments(); //获取数组中的实际参数类型 Class clzz = (Class) types[0]; //通过实际参数类型获取实际参数类型的实例 model = (T) clzz.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }
相关文章推荐
- Java反射获取实际泛型类型参数
- java获取泛型参数实际类型
- 如何获取java中泛型参数的实际类型--反射获取
- java基础-反射 --通过反射 获取泛型实际类型参数
- Java获取泛型类型中的实际类型
- Java 泛型学习(三)通过反射获得泛型的实际类型参数
- java中获取泛型参数类型
- 从头认识java-13.15 使用泛型时出现的问题(2)-实现参数化接口与重载
- java 通过反射获得泛型的实际类型参数
- 跳过编译器,获取泛型参数的实际类型
- 跳过编译器,获取泛型参数的实际类型
- Java获取泛型参数的类型的方法 .
- 【Java-Reflection】反射获取泛型参数类型
- ParameterizedType获取java泛型参数类型
- java获取泛型参数的类型的方法 - 实例讲解
- java获取泛型的实际类型
- 获取实现泛型接口的具体类的实现的类型
- ParameterizedType获取java泛型参数类型
- 黑马程序员:泛型的高级介绍及通过反射获取实际类型参数
- java_通过反射获得泛型的实际类型参数