欢迎来到天天文库
浏览记录
ID:59254701
大小:70.50 KB
页数:7页
时间:2020-09-08
《JAVA中的反射机制.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!
2、 看概念很晕的,继续往下看。 二,反射机制的作用: 1,反编译:.class-->.java 2,通过反射机制访问java对象的属性,方法,构造方法等; 这样好像更容易理解一些,下边我们具体看怎么实现这些功能。 三,在这里先看一下sun为我们提供了那些反射机制中的类:java.lang.Class; java.lang.reflect.Constructor; java.lang.reflect.F
3、ield; java.lang.reflect.Method;java.lang.reflect.Modifier; 很多反射中的方法,属性等操作我们可以从这四个类中查询。还是哪句话要学着不断的查询API,那才是我们最好的老师。 四,具体功能实现: 1,反射机制获取类有三种方法,我们来获取Employee类型[java] viewplaincopyprint?1.//第一种方式: 2.Classc1 = Class.forName("Emplo
4、yee"); 3.//第二种方式: 4.//java中每个类型都有class 属性. 5.Classc2 = Employee.class; 6. 7.//第三种方式: 8.//java语言中任何一个java对象都有getClass 方法 9.Employeee = new Employee(); 10.Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee) 2,创建对象:获取类以后我们来创建它的对象,利用newInstance:[java] vi
5、ewplaincopyprint?1.Class c =Class.forName("Employee"); 2. 3.//创建此Class 对象所表示的类的一个新实例 4.Objecto = c.newInstance(); //调用了Employee的无参数构造方法. 3,获取属性:分为所有的属性和指定的属性: a,先看获取所有的属性的写法:[java] viewplaincopyprint?1.//获取整个类 2. Class c = Class.forName("ja
6、va.lang.Integer"); 3. //获取所有的属性? 4. Field[] fs = c.getDeclaredFields(); 5. 6. //定义可变长的字符串,用来存储属性 7. StringBuffer sb = new StringBuffer(); 8. //通过追加的方法,将每个属性拼接到此字符串中 9. //最外边的publ
7、ic定义 10. sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{"); 11. //里边的每一个属性 12. for(Field field:fs){ 13. sb.append("t");//空格 14. sb.append(Modifier.toString(fiel
8、d.getModifiers())+" ");//获得属性的修饰符,例如public,static等等 15. sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字 16.
此文档下载收益归作者所有