您的位置:首页 > 编程语言 > Java开发

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就行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  反射