java中的反射机制
来源:互联网 发布:怎么用php设计网站 编辑:程序博客网 时间:2024/05/01 11:39
一,反射的概念:
主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!
二,反射机制的作用:
1、反编译:.class-->.java 2、通过反射机制访问java对象的属性,方法,构造方法等;
三、执行步骤:
1、获取类的对象:
//第一种方式: Classc1 = Class.forName("Employee"); //第二种方式: //java中每个类型都有class 属性. Classc2 = Employee.class; //第三种方式: //java语言中任何一个java对象都有getClass 方法 Employee e = new Employee(); Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)
2、获取类的属性和方法:
(1)获取属性:
//获取整个类 Class c = Class.forName("java.lang.Integer"); //通过创建fs存储获取的所有的属性 Field[] fs = c.getDeclaredFields(); //定义可变长的字符串,用来存储属性 StringBuffer sb = new StringBuffer(); //通过追加的方法,将每个属性拼接到此字符串中 //最外边的public定义 sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n"); //里边的每一个属性 for(Field field:fs){ sb.append("\t");//空格 sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符,例如public,static等等 sb.append(field.getType().getSimpleName() + " ");//属性的类的名字 sb.append(field.getName()+";\n");//属性的名字+回车 } sb.append("}"); System.out.println(sb);
(2)获取方法:
Method method = cla.getDeclaredMethod(methodName, HttpServletRequest.class , HttpServletResponse.class);//括号中第一个参数是方法名,后面的参数为方法中的参数
3、设置方法权限:(如果方法的访问权限为public,则可以不设置)
method.setAccessible(true);
4、执行方法:
method.invoke(this, request , response);
四、实例:
//获取用户传递的请求参数 String methodName = request.getParameter("method"); //通过方法名获取到方法的对象 //获取当前类的Class对象 Class cla = this.getClass(); //获取cla的的方法(Method对象) //getDeclaredMethod需要两个参数,方法名和参数名 //因为在java需要通过方法名和参数列表来确定一个方法 try { //获取方法对象 Method method = cla.getDeclaredMethod(methodName, HttpServletRequest.class , HttpServletResponse.class); //设置方法的访问权限 method.setAccessible(true); //调用方法 //invoke用于调用一个方法,第一个参数时要调用方法的对象,剩下是调用方法需要的参数 method.invoke(this, request , response); } catch (Exception e) { e.printStackTrace(); }
通过反射获取方法或构造方法的方法:
阅读全文
1 0
- Java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- Java中的反射机制
- java中的反射机制
- java中的反射机制
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- java中的反射机制
- Java中的反射机制
- java中的反射机制
- Java中的反射机制
- Java中的反射机制
- java中的反射机制
- 用CSS实现超出的文字显示省略号
- 深入分析Spring 与 Spring MVC容器
- 二分法 Binary Search
- Caffe配置注意事项
- 华为荣耀路由Pro 上网慢解决方法
- java中的反射机制
- UVA12219CommonSubexpressionElimination
- 第7章 IoC容器 II (Bean) -- Spring4.3.8参考文档中文版
- PHP静态化页面(转载)
- Oracle程序真的有传说中的那么难学吗?
- LVM动态扩展根分区实战
- 1775:采药 01背包
- React native环境搭建
- Linux学习笔记(一)------Linux起源