获取泛形的类型
2016-05-06 09:44
302 查看
如果你拿到了一个方法的返回值的类型,或者是一个字段的类型,但是它是一个泛形。
其实通过java的反射机制,是可以很简单的拿到方法的类型的
但是这样只能拿到方法返回值本身的类型,如何拿到泛形呢?
其实通过java的反射机制,是可以很简单的拿到方法的类型的
Method method = ..... Class<?> returnType = method.getReturnType(); String name = returnType.getName();
但是这样只能拿到方法返回值本身的类型,如何拿到泛形呢?
Method method = ....; Type genericReturnType = method.getGenericReturnType(); System.out.println(genericReturnType); if(genericReturnType instanceof ParameterizedType){ //通过这一步,判断是否是泛形参数的类型 ParameterizedType tt = (ParameterizedType) genericReturnType; //这个就是泛型参数,如果没有带泛形,打印出来的就是 返回值本身 Type[] actualTypeArguments = tt.getActualTypeArguments(); //为什么会是一个数组呢?原因是Map<String,Object>是有两个,List<String>只有一个, for(Type t : actualTypeArguments){ if(t instanceof ParameterizedType){ ...任何一个Type都有可能是泛形,如果是泛形,则需要重新走上面的getActualTypeArguments()
} if(t instanceof Class){
//拿到真实的Class了 System.out.println(t);
} } }
相关文章推荐
- [目录]hybrid app 开发实战(基于ionic,cordova,angularjs)
- Centos6.7安装docker1.7.1
- 2016年学习linux决心书
- shell学习笔记(一)
- epoll和poll、select的区别
- uploadify3.1版本参数使用详解
- idea中生成可执行的jar
- 使用Jersey开发RESTful服务
- Android Studio找不到R文件解决方法
- 杂记_一些关于python代码风格汇总_不断更新
- Leetcode 344 Reverse String 字符串处理
- Codeforces Round #350 (Div. 2) C
- 15省赛题回顾
- 数据库设计(1/9):数据元(Data Elements)
- [Leetcode] 92. Reverse Linked List II
- socket 笔记(二)
- ClassLoader
- Android性能测试工具:Emmagee
- 410c手把手安卓系统控制I2C光流传感器
- ECMAScript 6笔记(let,const 和 变量的解构赋值)