ParameterizedType的基本用法
/*** ParameterizedType* 1:getActualTypeArguments 得到带<> 参数的类型 比如java.lang.String* 2:java.util.List 得到带参数全限定名称* 3:如果属于自己的对象中对象且带有<>,返回自己的全限定名称*/
public class ParameterizedBean {List<String> list1;List list2;Map<String, Long> map1;Map map2;Map.Entry<Long, Short> map3;/*** Type[] getActualTypeArguments()*/public static void main(String[] args) {System.out.println("A===================================A");methodA();System.out.println("B===================================B");methodB();System.out.println("C===================================C");methodC();}private static void methodC() {Field[] fields = ParameterizedBean.class.getDeclaredFields();for(Field f:fields){if(f.getGenericType() instanceof ParameterizedType){ParameterizedType pType = (ParameterizedType) f.getGenericType();System.out.println("变量:"+f.getName());Type t = pType.getOwnerType();if(t == null){System.out.println("OwnerType:Null ");}else{ System.out.println("OwnerType:"+t.getTypeName());}}}}private static void methodB() {Field[] fields = ParameterizedBean.class.getDeclaredFields();for(Field f:fields){if(f.getGenericType() instanceof ParameterizedType){ParameterizedType pType = (ParameterizedType) f.getGenericType();System.out.println("变量:"+f.getName());System.out.println("RawType:"+pType.getRawType().getTypeName());}}}private static void methodA() {Field[] fields = ParameterizedBean.class.getDeclaredFields();for (Field f : fields) {if (f.getGenericType() instanceof ParameterizedType) {ParameterizedType pType = (ParameterizedType) f.getGenericType();System.out.println("变量:" + pType.getTypeName() + " ");Type[] types = pType.getActualTypeArguments();for (Type t : types) {System.out.println("类型:" + t.getTypeName());}}}}
}
运行结果
A===================================A
变量:java.util.List<java.lang.String>
类型:java.lang.String
变量:java.util.Map<java.lang.String, java.lang.Long>
类型:java.lang.String
类型:java.lang.Long
变量:java.util.Map.java.util.Map$Entry<java.lang.Long, java.lang.Short>
类型:java.lang.Long
类型:java.lang.Short
B===================================B
变量:list1
RawType:java.util.List
变量:map1
RawType:java.util.Map
变量:map3
RawType:java.util.Map$Entry
C===================================C
变量:list1
OwnerType:Null
变量:map1
OwnerType:Null
变量:map3
OwnerType:java.util.Map
ParameterizedType的基本用法相关推荐
- Java: ParameterizedType用法与简介
先说结论: ParameterizedType 意为参数化类型 一.何为参数化类型? 先看个例子 1.先定义一个待反射的对象,然后用 field.getGenericType() instanceof ...
- Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...
Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn 发布于:2012-09-15 ...
- java 反射 Constructor、Method、Field 基本用法
java反射主要从以下几个方面理解 理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor.Method.Fie ...
- SpringCloud OpenFeign 远程HTTP服务调用用法与原理
在 openFeign 未出现前,Spring 提供了 RestTemplate 作为远程服务调用的客户端,提供了多种便捷访问远程 Http 服务的方法,能够大大提高客户端的编写效率.由于文章内容会使 ...
- 从fastjson的TypeReference用法,推导如何实现泛型反射
1.fastjson带泛型反序列化的用法 fastjson 2.我们来看看TypeReference的源码是什么 TypeReference * 我们发现TypeReferenced的构造方法是保护方 ...
- Java5泛型的用法,T.class的获取和为擦拭法站台
转载自 Java5泛型的用法,T.class的获取和为擦拭法站台 Java 5的泛型语法已经有太多书讲了,这里不再打字贴书.GP一定有用,不然Java和C#不会约好了似的同时开始支持GP.但大家也清 ...
- [转]Java5泛型的用法,T.class的获取和为擦拭法站台
本文转载用于个人学习,原文链接:http://www.blogjava.net/calvin/archive/2006/04/28/43830.html 今天在做通用的DAO时,遇到需要获取 实体类的 ...
- 不藏了,这些Java反射用法总结都告诉你们
摘要:Java反射是一种非常强大的机制,它可以在同一个系统中去检测内部的类的字段.方法和构造函数.它非常多的Java框架中,都大量应用了反射技术,如Hibernate和Spring.可以说,反射机制的 ...
- Java反射原理和实际用法
背景 反射在Java中非常重要,是Java区别于其他编程语言的一大特性.Java中的AOP切面.动态代理等看起来像黑魔法一样的技术,就离不开反射.字节码等.这些技术能在不侵入原有代码的情况下,做一些增 ...
最新文章
- java 是怎么在中删除下拉列表_删除在一个下拉列表字段中选择的选项,并且不显示在该行中存在的其他下拉列表中不工作-jquery...
- 题目 1477:【蓝桥杯】【入门题】字符串输入输出函数
- 剑指offer:顺时针打印矩阵
- 【刷算法】判断链表是否有环以及返回入环节点
- 2018-2019-1 20165335 《信息安全系统设计基础》第六周学习总结
- hdu 2059(dp)
- poj 2456 Aggressive cows(贪心+二分)
- .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示
- PHP陈明忠_《PHP网站开发案例教程》习题答案
- main spring启动_SpringBoot学习(一):为什么main方法启动类需要放在项目根目录...
- Facebook将照片3D化技术商用,强大的算法+海量的数据+移动端优化是工程亮点
- SLAM GMapping(5)运动模型
- git switch
- 一枚比特币30多万,家用电脑24小时挖矿,多久才能挖到一枚?
- Ubuntu 11.10搭建和配置Nagios
- Java实现棒子老虎鸡小游戏
- kali-beef工具(xss-stored)
- python 战棋游戏代码实现(1):生物行走和攻击选择
- POJ 3026 Borg Maze(BFS+最小生成树)
- 计算机中信息的表示方法 教案,计算机中的数的表示教案