Java反射机制理解记录
来源:互联网 发布:mysql limit 编辑:程序博客网 时间:2024/06/05 16:58
最近做一个excel的模板导入,想做成动态性质的模板(大体上是模板中有几个属性,就放几个属性的值到bean中,用于存取)。 当时就想到反射机制,巴拉巴拉出来。
前期的准备工作介绍一下:
- 读取excel,以二维数组的形式 excelDatas[][]
- 读取数组的第一行模板,将模板属性和下标以Map的形式存储 titleIndex (在这之前有一个中英对照的静态Map,所以 titleIndex 中的key是 set + “属性名”的格式)
具体实现代码:
//时间格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List<ProcessPlanSplitDTO> addWbsList = newArrayList<ProcessPlanSplitDTO>();//第一行是模板,不取for(int i=1; i<excelDatas.length; i++){ ProcessPlanSplitDTO addWbs=new ProcessPlanSplitDTO(); for(String met : titleIndex.keySet()){ if(met.equals("setWbFlag")){ addWbs.getClass().getMethod(met, Integer.class).invoke(addWbs, Integer.parseInt(excelDatas[i][titleIndex.get(met)])); }else if(met.equals("setPlanBeginTime") || met.equals("setPlanFinishTime")){ Date date = sdf.parse(excelDatas[i]titleIndex.get(met)]); addWbs.getClass().getMethod(met, Date.class).invoke(addWbs, date); }else{ addWbs.getClass().getMethod(met, String.class).invoke(addWbs, excelDatas[i][titleIndex.get(met)]); } } addWbsList.add(addWbs);}
当时做完之后,感觉自己对反射的原理不够清晰,大体上只是会用,因此上网看了看,这里做一个理解记录;
一些概念性的东西,大家可以看看这些篇文章:
Java反射机制:
http://www.cnblogs.com/jqyp/archive/2012/03/29/2423112.html
学习:java原理—反射机制:
http://www.cnblogs.com/forlina/archive/2011/06/21/2085849.html对于“动态”的描述,说一下个人理解:
- 在java中new出来的对象,就是静态编译的,表明在编译时已经将这个模块放进去了,然后jvm去执行的是一个已经完全准备好的程序;
- 而反射的动态编译是指,在jvm去执行的时候才去编译。
从代码角度看,反射的前提是获取类对象 .class Class.forName() Class.forName():
.class getClass () forName() 详解 :
http://www.cnblogs.com/java-class/p/4496432.html
Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别 :
http://blog.sina.com.cn/s/blog_7ffb8dd5010127ix.html在我的理解中流程是这样的:
java文件编译为class文件,执行时将class文件放入内存中,而上面的这3个方法,就是内存中class文件的对象索引,获取对象然后对这个对象经行操作。 具体的区别文章中讲解的很清晰了。
0 0
- Java反射机制理解记录
- java反射机制理解
- 理解JAVA反射机制
- java反射机制理解
- JAVA反射机制理解
- Java 反射机制理解
- Java反射机制理解
- java反射机制理解
- Java反射机制理解
- java 反射机制的理解
- java反射机制的理解
- Java 反射机制的理解
- java反射机制的理解
- 简单理解java反射机制
- java深入理解反射机制
- java反射机制理解-上
- Java 反射机制的理解
- 深入理解java反射机制
- android sdk
- mysql 设置自增主键
- android判断service是否活着
- Java各版本在线及离线JDK API——如何制作CHM文档
- 织梦上传图片显示302
- Java反射机制理解记录
- Openwrt读取所连接的终端设备和IPV6的方法
- HBase 常用Shell命令
- forward和redirect的区别
- linux sudo使用和sudoers配置详解
- PHP在字符串中查找指定字符串并删除的代码
- python图片文本识别的简单实现
- 简单java定时任务,(仅供参考)
- 作为一个4年程序员至少需要掌握的专业技能