javaWeb笔记(一) 反射
2016-01-26 19:04
531 查看
15、反射的原理
应用在一些通用性比较高的代码中 后面学的框架,大多都是使用反射实现 * 在框架开发中,都是基于配置文件开发 ** 在配置文件中配置了类,可以通过反射得到类中所有内容,可以让类中某个方法执行 * 类中的所有内容:属性、没有参数的构造方法、有参数的构造方法、普通方法 反射原理 * 首先java保存本地.java * 编译java文件,成.class * 使用jvm,把class文件通过类加载器加载到内存中 * 万事万物都是对象,class文件在内存中使用class类表示 *当使用反射时候使用反射首先需要得到class类 三种方式 * 类名.class * 对象.getClass() * 使用Class.forName("路径") 属性 Field 构造方法 Constructor 方法 Method
16、使用反射来操作类
*首先获取到Class * 比如要对一个类进行实例化,可以new,不使用new,怎么获取? *没有参数
Class c3 = Class.forName(); Person p = (Person) c3.newInstance();
* 操作有参数的构造方法 //传递的是有参数构造方法里面参数类型,参数类型使用class形式传递 Constructor cs = c1.getConstructor(String.class,String.class); //通过有参数的构造方法设置值 Person p1 = (Person) cs.newInstance("lisi","100");
18、使用反射操作属性
//操作name属性 Field f1 = c2.getDeclareField("name") f1.set(Person实例,"wangwu");//相当于p.name = "wangwu"; 如果属性是私有的 f1.setAccessible(true);//设置可以操作私有属性
19、使用发射操作方法
Method m1 = c4.getDeclaredMethod("setName",String.class); m1.invoke(person实例,“wang”); //操作私有方法 m1.setAccessible(true); 操作的方法是静态的方法时候,因为静态方法调用方式是类名.方法名,不需要类的实例 使用反射操作静态方法时候,也是不需要实例 - m1.invoke(null,"niuqi");//第一个参数设置null就行
相关文章推荐
- Java反射随记
- AS3中的反射(速记) 分析
- C# 反射(Reflection)的用处分析
- C#通过反射创建自定义泛型
- 通俗易懂的C#之反射教程
- C#根据反射和特性实现ORM映射实例分析
- 深入反射生成数组的详解
- C#利用反射来判断对象是否包含某个属性的实现方法
- C#利用反射技术实现去掉按钮选中时的边框效果
- C#泛型和反射实例解析
- C# Dynamic关键字之:dynamic为什么比反射快的详解
- 传智播客学习之java 反射
- Java 反射之私有字段和方法详细介绍
- php使用反射插入对象示例分享
- java反射使用示例分享
- java利用反射实现动态代理示例
- 用户控件(ASCX)向网页(ASPX)传值使用反射实现
- 基于Java回顾之反射的使用分析
- c#反射调用方法示例
- C#通过反射获取当前工程中所有窗体并打开的方法