天天看點

反射機制

反射機制:

反射機制是能夠幫助我們把代碼變得更加靈活,可擴充性更高,俗稱“軟程式設計、軟寫法”。例如:有一個檔案裡面有一些值,想要把這些值指派到一個Student類的屬性中,按照以前所學到的知識點,隻能是通過檔案流将檔案裡的值讀取出來,然後再通過set方法将這些值都賦給Student類的屬性。但是,這種方式是将代碼寫死了,在這之後會有一個問題就是如果檔案裡的内容發生變動,或者要把這個Student類更換成Dog類的話,就要重新修改代碼。程式寫好了部署到伺服器上運作了,總不能時不時就打開來修改吧。

示意圖:

反射機制

那麼要解決這個問題,就得使用到反射機制,在怎麼使用反射機制解決這個問題之前,我們先學習一個類,這個類名叫Class,注意這是類不是class關鍵字。每一個類都能獲得Class對象,通過這個對象就可以操作那個類。例如:Dog類可以獲得Class對象,通過這個對象可以建構Dog類的對象,還可以對Dog類的屬性進行指派,對方法能夠進行調用等等,還能獲得這個類的所有的資訊,比如這個類的父類是哪個,實作了什麼接口,路徑在哪等等。

獲得Class對象的方法有三種,但是其中兩種是死寫法,一種是軟寫法,軟寫法是因為使用的字元串描述的類名,字元串是可以變動的,要更改類的時候隻需要更改字元串即可。

  代碼示例:

反射機制

使用這個對象可以獲得Test類的資訊:

反射機制

運作結果:

反射機制

使用這個對象可以獲得Test類的成員:

反射機制
反射機制

使用這個對象還可以對某個類的的屬性進行指派,還能調用方法和構造器,還能給方法和構造器傳遞參數。我們做個試驗:聲明一個Student類,在這個類裡寫一些屬性、方法和構造器,然後通過Test類來進行指派、調用和傳遞參數。

  Student類代碼示例:

反射機制

Test類代碼示例:

反射機制
反射機制

現在我們就可以運用以上的知識點來解決一開始的那個問題了,先編輯一個文本裡面寫一些屬性值,然後再寫一個Teacher類寫上對應的屬性,然後将屬性進行封裝,然後寫一個Test類通過Class對象來對Teacher類的屬性進行指派。

  檔案内容:

反射機制

Teacher類代碼示例:

反射機制
反射機制
反射機制
反射機制

繼續閱讀