Java反射机制梳理(一)
来源:互联网 发布:淘宝一般违规48分申诉 编辑:程序博客网 时间:2024/05/17 03:50
至于什么是反射,利用反射技术有什么好处,在这里文章中有一个详细的介绍了。具体可以查看公共技术点之 Java 反射 Reflection
下面梳理一下,在复习研究反射机制中,遇到的知识点:
(一).获取对象(3中方式)
1.通过类的完整路径来获取对象
Class demo1 = Class.forName("com.fangdingjie.bean.Book");2.通过实例化来获取对象
Book book = new Book(); Object ob = book; Class demo2 = ob.getClass();3直接类名称.class获取对象
Class demo3 = Book.class;
(二).获取对象属性
/** * 该方法用于获取传递过来的属性以及属性对应的值 * @param ob */public void show(Object ob) {// 获得传递过来的对象Class cl = ob.getClass();// 获得对应的属性集合Field[] fi = cl.getDeclaredFields();try {for (Field ff : fi) {ff.setAccessible(true);//获取私有属性的时候要先开启访问权限。否则会报错System.out.println("属性" + ff.getName() + ",对应的值:" + ff.get(ob));}} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
(三).获取对象中的方法以及调用
1 .获取方法以及参数
/** * 该方法用于返回 获取对象的所有方法,返回值类型以及参数信息 * @param ob */public void show(Object ob){Class cl = ob.getClass();Method [] method = cl.getDeclaredMethods();for(Method m:method){//获取方法的参数,返回的是一个Class类型的数组Class [] paramCl = m.getParameterTypes();System.out.println("方法名"+m.getName()+",返回值类型"+m.getReturnType()+",方法修饰值"+m.getModifiers()); }}2.方法的调用。
//该方法用于传递过来的实体对象方法的调用public void showUser(Object ob){Class cl = ob.getClass();try {Method mt = cl.getMethod("getName", null);System.out.println("方法名"+mt.getName());//invoke位调用该方法mt.invoke(ob, new Object[0]);//调用有带1个参数的方法Method mt1 = cl.getMethod("setName", String.class);mt1.invoke(ob, "Android疯狂讲义");//调用多个参数的方法Class [] cll = {String.class,int.class};Method mt2 = cl.getMethod("test", cll);Object [] object = {"test",154};mt2.invoke(ob, object);} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}以上为反射的基础知识,只是做为个人备忘。大神勿喷。
0 0
- Java反射机制梳理(一)
- Java反射机制梳理(二)
- Java反射机制(一)
- java反射机制(一)
- Java 反射机制(一)
- java反射机制(一)
- JAVA反射机制(一)
- Java反射机制(一)
- Java反射机制(一)
- Java反射机制一
- java反射机制 一
- JAVA反射机制(一)
- Java反射机制(一)
- java反射机制(一)
- 候捷谈Java反射机制(一)
- 候捷谈Java反射机制(一)
- 候捷谈Java反射机制(一)
- java 反射机制(一)简单实例
- 浅识SkipList
- java 小概念
- springmvc4 mybatis 整合 框架源码
- ecneuqeSevitucesnoCtsegnoL.128
- Java中的向前引用
- Java反射机制梳理(一)
- BZOJ2657: [Zjoi2012]旅游(journey)
- 【leetcode】【11】Container With Most Water
- UIView中hidden、alpha、clear color与opaque的区别
- python自动给数字前面补0的方法
- Jenkins修改时区(Docker)
- The identity used to sign the executable is no longer valid.Please verify that your device’s clock i
- fscanf()函数详解
- 并发Concurrent与并行Parallel的区别