国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java的反射機(jī)制原理

2019-11-15 00:59:17
字體:
供稿:網(wǎng)友
java的反射機(jī)制原理

一 反射機(jī)制的概念:

指在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法,對(duì)于任意一個(gè)對(duì)象,都能調(diào)用它的任意一個(gè)方法.這種動(dòng)態(tài)獲取信息,以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能叫java語言的反射機(jī)制.

二 反射機(jī)制的應(yīng)用:

生成動(dòng)態(tài)代理,面向切片編程(在調(diào)用方法的前后各加棧幀).

三 反射機(jī)制的原理:

1 首先明確的概念: 一切皆對(duì)象----類也是對(duì)象.

2 然后知道類中的內(nèi)容 :modifier constructor field method.

3 其次明白加載: 當(dāng)Animal.class在硬盤中時(shí),是一個(gè)文件,當(dāng)載入到內(nèi)存中,可以認(rèn)為是一個(gè)對(duì)象,是java.lang.class的對(duì)象.

當(dāng)運(yùn)行程序時(shí),實(shí)例化時(shí)產(chǎn)生Animal.class對(duì)象,這兩個(gè)對(duì)象有什么區(qū)別?

如下圖,上面的Animal.class對(duì)象是java.lang.class的對(duì)象;下面的對(duì)象是Animal.class實(shí)例化產(chǎn)生的對(duì)象

4 當(dāng)Animal.class載入到JVM中,JVM是怎么識(shí)別Animal.class中含有的方法,成員變量,構(gòu)造方法等內(nèi)容?

如下圖, Animal.class實(shí)例化對(duì)象中成員變量 毛色 =紅色;

加載到內(nèi)存的時(shí)候,毛色=null,是在實(shí)例化的時(shí)候毛色被賦值為紅色.

Animal.class中毛色這個(gè)屬性對(duì)于java.lang.class來說,是Field的一個(gè)屬性值, 毛色對(duì)于java.lang.class來說也是一個(gè)對(duì)象.這也是反射機(jī)制動(dòng)態(tài)獲取信息,以及動(dòng)態(tài)調(diào)用對(duì)象方法的原因.

下圖是Java.lang.class 中的方法

在java.lang.class中,毛色是Field的一個(gè)屬性值,Animal中所有的方法,成員變量,構(gòu)造器,修飾符都是按照java.lang.class中的標(biāo)準(zhǔn)去寫的,否則會(huì)在編譯的時(shí)候報(bào)錯(cuò)

四 放射機(jī)制簡單實(shí)例代碼

public class _14_ReflectTest07

{

public static void main(String[] args) throws Exception{

//1.獲取類

Class c = Class.forName("_12_CustomerService");

//獲取某個(gè)特定的方法

//通過:方法名+形參列表

Method m = c.getDeclaredMethod("login",String.class,String.class);

//通過反射機(jī)制執(zhí)行l(wèi)ogin方法.

Object o = c.newInstance();

//調(diào)用o對(duì)象的m方法,傳遞"admin""123"參數(shù),方法的執(zhí)行結(jié)果是retValue

Object retValue = m.invoke(o, "admin","123");

System.out.PRintln(retValue); //true

}

}

public class _12_CustomerService

{

//登錄

public boolean login(String name,String pwd){

if("admin".equals(name) && "123".equals(pwd)){

return true;

}

return false;

}

//退出

public void logout(){

System.out.println("系統(tǒng)已安全退出!");

}

}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高要市| 汝州市| 承德县| 纳雍县| 南汇区| 乌兰浩特市| 冕宁县| 准格尔旗| 济宁市| 武冈市| 威海市| 台山市| 城口县| 云霄县| 定兴县| 城固县| 宁化县| 宽甸| 綦江县| 黄冈市| 吴江市| 治县。| 西乡县| 吴旗县| 寻甸| 英超| 侯马市| 屯留县| 宁夏| 谢通门县| 普陀区| 太仓市| 独山县| 华容县| 昌图县| 惠来县| 东源县| 红安县| 平原县| 漯河市| 井冈山市|