一、反射:
1.概念:
反射,即:動(dòng)態(tài)獲取類的信息,以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能。
2.作用:
- 在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類
- 在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象
- 在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法
- 在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法
- 可以生成動(dòng)態(tài)代理
通過(guò)Java反射機(jī)制,可以在程序中訪問(wèn)已經(jīng)裝載到j(luò)vm中的Java對(duì)象的描述,以實(shí)現(xiàn)訪問(wèn)、檢測(cè)和修改描述Java對(duì)象本身信息的功能。Java反射機(jī)制很強(qiáng)大。其中,java.lang.reflect包中提供了對(duì)該功能的支持。
二、實(shí)現(xiàn)反射獲取類的方法:
方式一 : 通過(guò)Class.forName("類名字符串")獲取(最為常用的方法)
//類名字符串是“包名+類名”,返回Class的對(duì)象。
Class class = Class.forName("cheneyHao.Student");
方式二 : 通過(guò)示例對(duì)象的getClass()方法獲取
//先創(chuàng)建一個(gè)對(duì)象,在調(diào)用對(duì)象的getClass()方法。(任何一個(gè)Java對(duì)象都會(huì)有g(shù)etClass()方法)
Student student = new Student();
Class class = student.getClass();
方法三 : 通過(guò) .class 獲取
//通過(guò)類名.class,返回Class對(duì)象。(每個(gè)類都有Class屬性)
Class class = Student.class;