day38

day38——反射Reflection

一酿箭、上節(jié)課回顧

IO流:

1、4大基類(lèi)流:
InputStream,
OutputStream准验,
Reader,
Writer廷没,

提供讀和寫(xiě)的方法
read()
write()

2糊饱、文件流:節(jié)點(diǎn)流
FileInputStream
FileOutputStream
FileReader
FileWriter

3、轉(zhuǎn)換流:處理流
InputStreamReader颠黎,
    InputStream
OutputStreamWriter另锋,
    OutputStream
    
字節(jié)-字符的橋梁,指定編碼集

4狭归、緩存流:處理流:高效(讀和寫(xiě)都發(fā)生在緩沖區(qū):數(shù)組夭坪,byte[],char[])
BufferedInputStream
BufferedOutputStream
BufferedReader
    新增方法:readLine()——>String
BufferedWriter
    新增方法:newLine()——>void

flush()
close()

5、對(duì)象流:
ObjectInputStream
ObjectOutputStream
直接讀和寫(xiě)對(duì)象:序列化
    如果讓對(duì)象能夠進(jìn)行讀和寫(xiě)过椎,具有序列化的功能台舱。實(shí)現(xiàn)一個(gè)標(biāo)記接口:java.io.Serializable。就表示該類(lèi)具有序列化和反序列化的功能。serialVersionUID:代碼中顯示的生成竞惋。
    
    序列化:對(duì)象——>二進(jìn)制數(shù)值柜去,serialVersionUID:1234
    反序列化:二進(jìn)制數(shù)值——>對(duì)象,serialVersionUID:2234
    
6拆宛、打印流
PrintStream
PrintWriter

7嗓奢、內(nèi)存流
ByteArrayInputStream
ByteArrayOutputStream

網(wǎng)絡(luò)編程:

1、核心的三要素

A:協(xié)議:TCP浑厚,UDP
    ServerSocket類(lèi):服務(wù)端
    Socket類(lèi):客戶(hù)端
    
B:IP地址:標(biāo)識(shí)網(wǎng)絡(luò)中的主機(jī)
C:port端口:標(biāo)識(shí)主機(jī)中的程序
    一個(gè)端口只能被一個(gè)程序所占用股耽。
    

2、網(wǎng)絡(luò)編程 流程&模型

服務(wù)器:
step1:創(chuàng)建ServerSocket類(lèi)钳幅,
step2:等待客戶(hù)端鏈接:accept()——>Socket
step3:獲取流:InputStream物蝙,OutputStream,
step4:關(guān)閉資源:socket敢艰,流
客戶(hù)端:
step1:創(chuàng)建Socket類(lèi)诬乞,申請(qǐng)鏈接服務(wù)器
step2:獲取流:InputStream,OutputStream钠导,
step3:關(guān)閉資源:socket震嫉,流

二、本節(jié)課內(nèi)容

2.1牡属、反射

執(zhí)行java程序的流程:

step1:編寫(xiě)源代碼
    Person.java
    
step2:通過(guò)編譯器進(jìn)行編譯
    Person.class
    
step3:解釋執(zhí)行字節(jié)碼文件
    Person.class執(zhí)行了票堵。。
    
        由JVM負(fù)責(zé)加載字節(jié)碼文件逮栅,從主函數(shù)中逐行的執(zhí)行悴势。。
    
根據(jù)類(lèi)措伐,創(chuàng)建對(duì)象
對(duì)象訪問(wèn)方法
對(duì)象訪問(wèn)屬性

反射:應(yīng)用特纤,大多數(shù)的框架開(kāi)發(fā)中,都是基于配置文件废士。叫潦。底層都是反射蝇完。官硝。。

Person類(lèi):

? 屬性:

? 構(gòu)造器:構(gòu)造函數(shù)短蜕,構(gòu)造方法氢架,用于創(chuàng)建對(duì)象

? 方法:靜態(tài)方法,非靜態(tài)方法

包含主函數(shù)的類(lèi)中:

? Person p1 = new Person();

? p1.屬性:可以賦值朋魔,取值

? p1.方法:執(zhí)行方法

反射:通過(guò)操作字節(jié)碼文件岖研,反過(guò)來(lái)獲取類(lèi)中的內(nèi)容:屬性,構(gòu)造,方法

? 構(gòu)造:實(shí)例化對(duì)象

? 屬性:訪問(wèn)屬性

? 方法:調(diào)用方法

反射的操作:

step1:獲取Class類(lèi)的對(duì)象
    Class cls1 = ....
step2:操作Class類(lèi)的實(shí)例孙援,獲取字節(jié)碼文件中的內(nèi)容:字段屬性害淤,構(gòu)造方法,普通方法拓售。
    

2.2窥摄、Class類(lèi)

Class類(lèi):字節(jié)碼文件對(duì)應(yīng)的對(duì)象。

獲取Class類(lèi)的實(shí)例

方法一:
對(duì)象.getClass()——>Class類(lèi)的實(shí)例對(duì)象
    Class cls1 = p1.getClass();
方法二:
類(lèi)名.class——>Class類(lèi)的實(shí)例對(duì)象
    Class cls2 = Person.class;
方法三:
Class類(lèi)提供了一個(gè)靜態(tài)的方法:forName()
    Class cls3 = Class.forName("包名.類(lèi)名");

2.3础淤、Constructor

Constructor類(lèi):構(gòu)造方法的對(duì)應(yīng)的對(duì)象崭放。

//重要思路:
//step1:獲取Class類(lèi)實(shí)例:
Class<?> cls1 = Person.class;
//step2:獲取Constructor類(lèi)實(shí)例:
Constructor<?> constructor2 = cls1.getConstructor(String.class,int.class);//public Person(String, int){}
//step3:根據(jù)構(gòu)造方法實(shí)例,創(chuàng)建類(lèi)的對(duì)象:Person對(duì)象
Person p2 = (Person) constructor2.newInstance("王二狗",30);

獲取構(gòu)造方法:

1鸽凶、獲取所有的public 的構(gòu)造方法:數(shù)組
Constructor<?>[] getConstructors()  
2币砂、獲取單個(gè)的public 的構(gòu)造方法:具體的某一個(gè)構(gòu)造方法
Constructor<T> getConstructor(Class<?>... parameterTypes) 
    
3、獲取所有的構(gòu)造方法:數(shù)據(jù)
Constructor<?>[] getDeclaredConstructors()  
4玻侥、獲取單個(gè)構(gòu)造方法:具體的某一個(gè)構(gòu)造方法
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)  

創(chuàng)建對(duì)象:

T newInstance(Object... initargs) 
使用此 Constructor 對(duì)象表示的構(gòu)造方法來(lái)創(chuàng)建該構(gòu)造方法的聲明類(lèi)的新實(shí)例决摧,并用指定的初始化參數(shù)初始化該實(shí)例。 

2.4使碾、Field

Field類(lèi):詞義字段蜜徽,屬性

思路:
//step1:獲取Class類(lèi)的實(shí)例
//step2:獲取Field類(lèi)實(shí)例,表示屬性
//step3:訪問(wèn)實(shí)例的屬性票摇,進(jìn)行賦值

獲取Field實(shí)例:

 
//3.Field getDeclaredField(String name) 
          返回一個(gè) Field 對(duì)象拘鞋,該對(duì)象反映此 Class 對(duì)象所表示的類(lèi)或接口的指定已聲明字段。 /
//4.Field[] getDeclaredFields() 
          返回 Field 對(duì)象的一個(gè)數(shù)組矢门,這些對(duì)象反映此 Class 對(duì)象所表示的類(lèi)或接口所聲明的所有字段盆色。 

操作屬性:

A:設(shè)置是否可以訪問(wèn):
field.setAccessible(true);
B:設(shè)置某個(gè)實(shí)例的該屬性值
field.set(對(duì)象,數(shù)據(jù));

2.5祟剔、Method

Method類(lèi):方法的實(shí)例

獲取方法:

 Method getMethod(String name, Class<?>... parameterTypes) 
          返回一個(gè) Method 對(duì)象隔躲,它反映此 Class 對(duì)象所表示的類(lèi)或接口的指定公共成員方法。 
 Method[] getMethods() ;//本類(lèi)的和父類(lèi)的public類(lèi)型的方法物延。
          返回一個(gè)包含某些 Method 對(duì)象的數(shù)組宣旱,這些對(duì)象反映此 Class 對(duì)象所表示的類(lèi)或接口(包括那些由該類(lèi)或接口聲明的以及從超類(lèi)和超接口繼承的那些的類(lèi)或接口)的公共 member 方法。 

 Method getDeclaredMethod(String name, Class<?>... parameterTypes)
          返回一個(gè) Method 對(duì)象叛薯,該對(duì)象反映此 Class 對(duì)象所表示的類(lèi)或接口的指定已聲明方法浑吟。 
 Method[] getDeclaredMethods() //獲取本類(lèi)中所有的方法,但是不包括繼承來(lái)的 
          返回 Method 對(duì)象的一個(gè)數(shù)組耗溜,這些對(duì)象反映此 Class 對(duì)象表示的類(lèi)或接口聲明的所有方法组力,包括公共、保護(hù)抖拴、默認(rèn)(包)訪問(wèn)和私有方法燎字,但不包括繼承的方法。 

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市候衍,隨后出現(xiàn)的幾起案子笼蛛,更是在濱河造成了極大的恐慌,老刑警劉巖蛉鹿,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伐弹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡榨为,警方通過(guò)查閱死者的電腦和手機(jī)惨好,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)随闺,“玉大人日川,你說(shuō)我怎么就攤上這事【乩郑” “怎么了龄句?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)散罕。 經(jīng)常有香客問(wèn)我分歇,道長(zhǎng),這世上最難降的妖魔是什么欧漱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任职抡,我火速辦了婚禮,結(jié)果婚禮上误甚,老公的妹妹穿的比我還像新娘缚甩。我一直安慰自己,他們只是感情好窑邦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布擅威。 她就那樣靜靜地躺著,像睡著了一般冈钦。 火紅的嫁衣襯著肌膚如雪郊丛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天瞧筛,我揣著相機(jī)與錄音厉熟,去河邊找鬼。 笑死驾窟,一個(gè)胖子當(dāng)著我的面吹牛庆猫,可吹牛的內(nèi)容都是我干的认轨。 我是一名探鬼主播绅络,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了恩急?” 一聲冷哼從身側(cè)響起杉畜,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衷恭,沒(méi)想到半個(gè)月后此叠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡随珠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年灭袁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窗看。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茸歧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出显沈,到底是詐尸還是另有隱情软瞎,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布拉讯,位于F島的核電站涤浇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏魔慷。R本人自食惡果不足惜只锭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望院尔。 院中可真熱鬧纹烹,春花似錦、人聲如沸召边。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)隧熙。三九已至片挂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贞盯,已是汗流浹背音念。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躏敢,地道東北人闷愤。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像件余,于是被迫代替她去往敵國(guó)和親讥脐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遭居,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354