模拟Java内省的功能
来源:互联网 发布:淘宝卖家手机号采集器 编辑:程序博客网 时间:2024/05/21 23:31
★ 前提:
定义一个Model类,里面所有的属性都是private的,然后为每个属性提供getter和setter方法;
再准备一个Map,map的key值都是类里面的属性字段的字符串表示,值任意。
★ 实际:
设计一个方法Object getModel(Map map,Class cls),传入一个包含所有值的Map,然后再传入Model类的class,那么返回Model类的实例,这个实例里面已经包含好了所有相关的数据。也就是把Map中的数据通过反射,设置回到Model类实例中。
package cn.hucu.reflect.beanUtils;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Map;public class MyBeanUtils {public static <T> T populate(Class<T> c, Map<String, Object> map) //泛型throws Exception {T obj = c.newInstance();// 获取c中的所有属性fldsField flds[] = c.getDeclaredFields();// 针对每一个fld,如果map中有该属性,就生成对应的setter方法,并且把c中把该Method对象找出来,进行调用以设置数据。否则就跳过for (Field fld : flds) {// 到map中查找,看是否有该属性的数据Object value = map.get(fld.getName());if (value == null) {System.out.println(fld.getName() + "属性的数据在Map中没有,跳过赋值...");} else {// 生成对应的setter方法,并且把c中把该Method对象找出来,进行调用以设置数据String methodName = "set"+ fld.getName().substring(0, 1).toUpperCase() //例如:setName首字母大写+ fld.getName().substring(1);Method m = c.getDeclaredMethod(methodName, fld.getType());m.invoke(obj, value);}}return obj;}}小小工具能量大!!!
阅读全文
0 0
- 模拟Java内省的功能
- 练习(模拟Java内省的功能)
- 类反射 模拟Java内省的功能
- 模拟java内省的功能,做自己的BeanUtils
- 【类反射】(模拟Java内省的功能)
- 利用类反射模拟内省功能
- java的内省机制
- Java的内省技术
- java 内省的使用
- java的内省
- Java内省的使用
- 浅谈java的内省
- Java的内省
- Java内省的学习
- java的内省和反射
- Java的内省(introspector)
- java的内省与反射
- java的反射和内省
- 变分自编码器VAE(上)
- android 微信支付返回XML格式数据的解析方法
- effective C++ 条款十二解读
- 使用opencv2变换图片大小
- linux中的firewalld服务
- 模拟Java内省的功能
- java网络爬虫解决方案
- C/S总结
- codeforces 840A Leha and Function
- 2017/8/19训练日记(被虐|_'))
- Friend-Graph 1003
- 待深入理解
- zzuli 2180 GJJ的日常之沉迷数学(逆元)
- Java——Java集合List