Java 2實用教程第6版PPT1第9章 反射_第1頁
Java 2實用教程第6版PPT1第9章 反射_第2頁
Java 2實用教程第6版PPT1第9章 反射_第3頁
Java 2實用教程第6版PPT1第9章 反射_第4頁
Java 2實用教程第6版PPT1第9章 反射_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

博學(xué)谷——讓IT教學(xué)更簡單,讓IT學(xué)習(xí)更有效PAGE12PAGE8黑馬程序員《Java基礎(chǔ)入門(第3版)》教學(xué)設(shè)計課程名稱:授課年級:授課學(xué)期:教師姓名:年月課題名稱第9章反射機制計劃課時6課時教學(xué)引入在Java中,如果定義了一個類,則可以通過類的實例化操作創(chuàng)建對象,并通過對象獲取對應(yīng)的類信息。反射機制是Java中非常重要的一個知識點,應(yīng)用面很廣,Java中的大部分類庫以及框架底層都用到了反射機制,反射機制是Java框架設(shè)計的靈魂。本章將針對Java的反射機制進行詳細(xì)講解。教學(xué)目標(biāo)使學(xué)生了解反射,能夠說出反射的概念和優(yōu)點。使學(xué)生了解Class類,夠說出Class類實例化對象的3種方式。使學(xué)生熟悉Class類的基本使用,夠分別通過無參構(gòu)造方法和有參構(gòu)造方法實例化對象。使學(xué)生掌握類結(jié)構(gòu)的獲取,能夠通過反射獲取類的父類、全部構(gòu)造方法、全部方法、全部屬性以及實現(xiàn)的全部接口。使學(xué)生熟悉反射的基本應(yīng)用,能夠通過反射調(diào)用類中的setter、getter方法,操作類中的屬性。教學(xué)重點獲取類實現(xiàn)的全部接口獲取父類獲取全部構(gòu)造方法獲取全部方法獲取全部屬性教學(xué)難點通過反射調(diào)用類中的方法通過反射調(diào)用類中的getter/setter方法通過反射操作屬性教學(xué)方式課堂教學(xué)以PPT講授為主,并結(jié)合多媒體進行教學(xué)教學(xué)過程第一課時(反射概述、認(rèn)識Class類、通過無參構(gòu)造實例化對象)一、復(fù)習(xí)鞏固教師通過上節(jié)課作業(yè)的完成情況,對學(xué)生吸收不好的知識點進行再次鞏固講解。二、通過直接導(dǎo)入的方式導(dǎo)入新課在程序運行過程中,如果想要對程序自身進行操作的話,例如,自我檢查、獲取類本身等等,此時需要使用Java的反射機制對類進行一系列操作。接下來將針對反射的概述進行詳細(xì)講解。三、新課講解知識點1-反射概述教師通過PPT結(jié)合實際操作的方式講解反射概述。(1)什么是反射:常規(guī)情況下程序通過類創(chuàng)建對象,反射就是將這一過程進行反轉(zhuǎn),通過實例化對象來獲取所屬類的信息。(2)Java的反射機制要有以下4個作用。在程序運行狀態(tài)中,構(gòu)造任意一個類的對象。在程序運行狀態(tài)中,獲取任意一個對象所屬的類的信息。在程序運行狀態(tài)中,調(diào)用任意一個類的成員變量和方法。在程序運行狀態(tài)中,獲取任意一個對象的屬性和方法。(3)反射機制的優(yōu)點是可以實現(xiàn)動態(tài)創(chuàng)建對象和編譯。知識點2-認(rèn)識Class類教師通過PPT結(jié)合實際操作的方式講解認(rèn)識Class類。(1)Class對象:Java虛擬機在加載.class文件時,會產(chǎn)生一個Class對象代表該.class字節(jié)碼文件,從Class對象中可以獲得.class文件內(nèi)容。(2)Class類的常用方法,具體如下。forName(StringclassName):獲取與給定字符串名稱的類或接口相關(guān)聯(lián)的Class對象。getConstructors():獲取類中所有public修飾的構(gòu)造方法對象。getDeclaredFields():獲取所有成員變量對應(yīng)的字段類對象,包括public、protected、default和private修飾的字段,但不包括從父類繼承的字段。getFields():獲取所有public修飾的成員變量對應(yīng)的字段類對象,包括從父類繼承的字段。getMethods():獲取所有public修飾的成員方法對應(yīng)的方法類對象,包括從父類繼承的方法。getMethod(Stringname,Class...parameterType):根據(jù)方法名和參數(shù)類型獲得對應(yīng)的方法類對象,并且只能獲得public修飾的方法類對象。getInterfaces():獲取當(dāng)前類實現(xiàn)的全部接口。getClass():獲取調(diào)用該方法的Class對象。getName():獲取類的完整名稱,名稱中包含包的名稱。getPackage():獲取類所屬的包名稱。getSuperclass():獲取類的父類。newInstance():創(chuàng)建Class對象關(guān)聯(lián)類的對象。getComponentType():獲取數(shù)組的對應(yīng)Class對象。isArray():判斷此Class對象是否是一個數(shù)組。(3)使用Class類進行對象的實例化可以使用以下3種方式。根據(jù)全限定類名獲?。篊lass.forName(“全限定類名”)。根據(jù)對象獲?。簩ο竺?getClass()。根據(jù)類名獲取:類名.class。(4)通過一個案例演示Class類的3種方式的實例化。知識點3-通過無參構(gòu)造實例化對象教師通過PPT結(jié)合實際操作的方式講解通過無參構(gòu)造實例化對象。如果想通過Class類實例化其他類的對象,則可以調(diào)用newInstance()方法,在調(diào)用newInstance()方法實例化其他類的對象時,必須要保證被實例化的類中存在一個無參構(gòu)造方法。通過一個案例演示Class類通過無參構(gòu)造方法實例化對象。四、歸納總結(jié)教師回顧本節(jié)課所講的內(nèi)容,并通過測試題的方式引導(dǎo)學(xué)生解答問題并給予指導(dǎo)。五、布置作業(yè)教師通過高校教輔平臺()布置本節(jié)課作業(yè)以及下節(jié)課的預(yù)習(xí)作業(yè)。第二課時(通過有參構(gòu)造實例化對象、獲取類實現(xiàn)的全部接口、獲取父類、獲取全部構(gòu)造方法)一、復(fù)習(xí)鞏固教師通過上節(jié)課作業(yè)的完成情況,對學(xué)生吸收不好的知識點進行再次鞏固講解。二、通過直接導(dǎo)入的方式導(dǎo)入新課前面我們已經(jīng)講解了反射的概述以及對Class類的使用也有了一個初步的理解,在Java中,還可以使用Class類的有參構(gòu)造方法實例化對象,接下來我們講解有參構(gòu)造方法實例化對象以及通過反射獲取接口、方法等相關(guān)知識。新課講解知識點1-通過有參構(gòu)造實例化對象教師通過PPT結(jié)合實際操作的方式講解通過有參構(gòu)造實例化對象。(1)通過有參構(gòu)造方法實例化對象的步驟如下。通過調(diào)用Class類中的getConstructors()方法獲取要實例化的類中的全部構(gòu)造方法。獲取實例化使用的有參構(gòu)造方法對應(yīng)的Constructor對象。通過Constructor類實例化對象。(2)Constructor類的常用方法,具體如下。getModifiers():獲取構(gòu)造方法的修飾符。getName():獲取構(gòu)造方法的名稱。getParameterTypes():獲取構(gòu)造方法中參數(shù)的類型。toString():返回此構(gòu)造方法的信息。newInstance(Object…initargs):通過該構(gòu)造方法的指定參數(shù)列表創(chuàng)建一個該類的對象,如果未設(shè)置參數(shù),則表示采用默認(rèn)無參的構(gòu)造方法。(3)通過一個案例講解使用有參構(gòu)造方法實例化對象。知識點2-獲取類實現(xiàn)的全部接口教師通過PPT結(jié)合實際操作的方式講解獲取類所實現(xiàn)的全部接口。(1)要獲取一個類所實現(xiàn)的全部接口,可以調(diào)用Class類中的getInterfaces()方法。getInterfaces()方法聲明格式如下所示。publicClass[]getInterfaces();(2)通過一個案例講解通過getInterfaces()方法獲取一個類所實現(xiàn)的全部接口。知識點3-獲取父類教師通過PPT結(jié)合實際操作的方式講解獲取父類。(1)要獲取一個類所實現(xiàn)的全部接口,可以調(diào)用Class類中的getInterfaces()方法。getInterfaces()方法聲明格式如下所示。publicClass[]getInterfaces();(2)通過一個案例講解通過getInterfaces()方法獲取一個類所實現(xiàn)的全部接口。知識點4-獲取全部構(gòu)造方法教師通過PPT結(jié)合實際操作的方式講解獲取全部構(gòu)造方法。(1)Class類的getConstructors()方法獲取的構(gòu)造方法需要存儲到Constructor類型的數(shù)組當(dāng)中。通過調(diào)用Constructor類的方法可以獲取構(gòu)造方法的詳細(xì)信息,如構(gòu)造方法的權(quán)限、名稱、參數(shù)信息等。(2)通過一個案例講解使用Constructor類的常用方法取得一個類中的全部構(gòu)造方法。四、歸納總結(jié)教師回顧本節(jié)課所講的內(nèi)容,并通過測試題的方式引導(dǎo)學(xué)生解答問題并給予指導(dǎo)。五、布置作業(yè)教師通過高校教輔平臺()布置本節(jié)課作業(yè)以及下節(jié)課的預(yù)習(xí)作業(yè)。第三課時(獲取全部方法、獲取全部屬性、通過反射調(diào)用類中的方法)一、復(fù)習(xí)鞏固教師通過上節(jié)課作業(yè)的完成情況,對學(xué)生吸收不好的知識點進行再次鞏固講解。二、通過直接導(dǎo)入的方式導(dǎo)入新課在實際應(yīng)用中,通過反射可以得到一個類的完整結(jié)構(gòu),包括類的構(gòu)造方法、類的屬性、類的方法。通過反射獲取類結(jié)構(gòu)需要使用到j(luò)ava.lang.reflect包下的Constructor、Field以及Method3個類。前面我們已經(jīng)學(xué)習(xí)了通過反射獲取類結(jié)構(gòu)的部分內(nèi)容,接下來將對通過反射獲取類結(jié)構(gòu)的其他內(nèi)容進行詳細(xì)講解。三、新課講解知識點1-獲取全部方法教師通過PPT結(jié)合實際操作的方式講解獲取全部方法。(1)如果要獲取類中的所有public修飾的成員方法對象,那么可以使用Class類中的getMethods()方法,該方法返回一個Method類的對象數(shù)組。(2)Method類的常用方法具體如下。getModifiers():獲取方法的權(quán)限修飾符。getName():獲取方法的名稱。getParameterTypes():獲取方法的全部參數(shù)的類型。getReturnType():獲取方法的返回值類型。getExceptionType():獲取方法拋出的全部異常類型。newInstance(Object…initargs):通過反射調(diào)用類中的方法。(3)通過一個案例演示類的全部方法的獲取。知識點2-獲取全部屬性教師通過PPT結(jié)合實際操作的方式講解獲取全部屬性。(1)通過反射獲取一個類中的全部屬性,Java提供了兩種獲取方式,分別如下。獲取本類中,以及實現(xiàn)的接口或繼承的父類中的公共屬性,需要調(diào)用getFields()方法。獲取本類中的全部屬性,需要調(diào)用getDeclaredFields()方法。(2)Field類的常用方法具體如下。getModifiers():獲取屬性的權(quán)限修飾符。getName():獲取屬性的名稱。isAccessible():判斷屬性是否可被外部訪問。setAccessible(Booleanflag):設(shè)置屬性是否可被外部訪問。toString():返回Field類的信息。get(Objectobj):獲取指定對象中屬性的具體內(nèi)容。set(Objectobj,Objectvalue):設(shè)置指定對象中屬性的具體內(nèi)容。通過一個案例演示如何獲取一個類中的全部屬性信息。知識點3-通過反射調(diào)用類中的方法教師通過PPT結(jié)合實際操作的方式講解通過反射調(diào)用類中的方法。(1)通過反射調(diào)用類中的方法的具體操作步驟如下。通過調(diào)用Class類的getMethod()方法獲取一個Method類的對象。調(diào)用getMethod()方法時需要傳入方法名作為參數(shù)。通過獲取的Method對象調(diào)用invoke()方法,執(zhí)行目標(biāo)方法。調(diào)用invoke()方法時,需要傳遞Class對象的實例作為參數(shù)。(2)通過一個案例講解通過反射調(diào)用類中的方法。四、歸納總結(jié)教師回顧本節(jié)課所講的內(nèi)容,并通過測試題的方式引導(dǎo)學(xué)生解答問題并給予指導(dǎo)。五、布置作業(yè)教師通過高校教輔平臺()布置本節(jié)課作業(yè)以及下節(jié)課的預(yù)習(xí)作業(yè)。第四課時(通過反射調(diào)用類中的getter/setter方法、通過反射操作屬性)一、復(fù)習(xí)鞏固教師通過上節(jié)課作業(yè)的完成情況,對學(xué)生吸收不好的知識點進行再次鞏固講解。二、通過直接導(dǎo)入的方式導(dǎo)入新課通過上一節(jié)的學(xué)習(xí),我們可以知道,反射可以取得一個類的完整結(jié)構(gòu),但在實際應(yīng)用中,更多的是通過反射動態(tài)地訪問類中的指定方法或指定屬性,本節(jié)將對針對通過反射調(diào)用類中的getter/setter方法、通過反射操作屬性進行詳細(xì)講解。三、新課講解知識點1-通過反射調(diào)用類中的getter/setter方法教師通過PPT結(jié)合實際操作的方式講解通過反射調(diào)用類中的getter/setter方法。通過一個案例演示使用反射調(diào)用類中的setter方法及getter方法。使用反射調(diào)用類中的setter方法及getter方法的實現(xiàn)思路如下。設(shè)置方法名稱。設(shè)置方法名稱時,直接使用的是屬性名稱,例如name和age。但實際需要的方法名稱是setName()、getName()、setAge()、getAge(),所有屬性名稱的首字母必須大寫,為了解決這個問題,程序中單獨定義了一個initStr()方法,通過此方法將字符串中的首字母轉(zhuǎn)換成大寫,并在首字母轉(zhuǎn)換成大寫之后,將字符串連接到set字符串及get字符串之后找到對應(yīng)的方法。調(diào)用setter()方法時,傳入了實例化對象、要操作的屬性名稱、要設(shè)置的參數(shù)內(nèi)容以及具體的參數(shù)類型,這樣做是為了滿足getMethod()方法和invoke()方法的調(diào)用。在調(diào)用getter()方法時,同樣傳入了一個實例化對象,因為其getter方法本身不需要接收任何參數(shù),所以只傳入了屬性名稱。知識點2-通過反射操作屬性教師通過PPT結(jié)合實際操作的方式講解通過反射操作屬性。(1)類的屬性的訪問方式:除了調(diào)用getter/setter方法訪問類的屬性之外,反射機制也可以直接通過Field類操作類中的屬性,通過Field類提供的set()方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論