例1:此程序加載了三個(gè)字節(jié)碼文件? Recfl? Scanner? String?
一個(gè)字節(jié)碼文件對(duì)應(yīng)一個(gè)字節(jié)碼對(duì)象(鏡像)
但是一個(gè)字節(jié)碼文件可以產(chǎn)生多個(gè)對(duì)象南用。
正射:先加載字節(jié)碼文件坠七,得到類名
反射:Class.forName()加載字節(jié)碼文件到內(nèi)存悠就,得到字節(jié)碼對(duì)象逛艰,
class.newInstance()字節(jié)碼對(duì)象去調(diào)用類里面的無(wú)參的構(gòu)造方法,通過(guò)字節(jié)碼對(duì)象調(diào)用的只能是無(wú)參的構(gòu)造方法
例:?
得到鏡像的三種方式:并且得到的鏡像是相等的,因?yàn)橐粋€(gè)字節(jié)碼文件對(duì)應(yīng)一個(gè)字節(jié)碼對(duì)象? 通過(guò)鏡像可以得到一個(gè)類中所有的東西,包括私有的护奈。
①:Class.forName("全類名");
②:類名.class;
③:對(duì)象.getClass();
基本數(shù)據(jù)類型有鏡像,且只有一種方式獲得鏡像類名.class;
例:Class clazz = int.class;
String類型獲取鏡像舉例 對(duì)象.getClass();
舉例:clazz3和clazz4是同一個(gè)鏡像
獲取多個(gè)參數(shù)的構(gòu)造器并且調(diào)用: 這種方式只能得到共有的甫恩,而不能得到私有的逆济。
獲取私有的構(gòu)造器并且調(diào)用:
獲取所有的構(gòu)造器包括私有的:
得到類中單個(gè)非私有的屬性并且賦值
得到類中單個(gè)非私有屬性并且賦值和獲取值:
得到類中單個(gè)私有屬性并且賦值和獲取值:?
通過(guò)反射去將調(diào)用類中的方法:
通過(guò)反射去調(diào)用setName方法并且通過(guò)反射調(diào)用getName將值得到:(必須要背會(huì)酌予,不會(huì)就是豬)
如果方法沒(méi)有返回值那么這個(gè)方法(invoke)所返回的結(jié)果就是null? ? 如果有返回值磺箕,那么返回什么值就是什么
獲取類中私有的方法:
獲取類中所有的公共方法,包括繼承的:
獲取類中所有的方法包括私有的抛虫,但不包括繼承的
作業(yè):寫一個(gè)榨汁機(jī)類