java反射學習筆記2

反射的基本操作原理

反射開發模式,重點:

java.lang.Class<T>

實例化對象有三種方式完成:

1、Object類之中存在有一個getClass()方法:public final Class<?> getClass();
此方法不能被子類所覆寫,且所有類的實例化對象都可以調用;
2、利用“package.class.class”的形式實例化Class類對象
在一些開源框架中大量使用到
操作直觀,直接
3、利用Class類中提供的public static Class<?>forName(String)
主要用於工廠類上,設計JDBC程序驅動加載
特點:程序沒有很強烈的嚴謹性,只要程序不運行,就不會出現任何錯誤,要運行,就把指定的類設置上。
在Class類中提供一個實例化對象的方法 newInstance() throws
 實例化異常,Instantiation
 沒有無參數構造,類名錯誤
 錯誤訪問異常, IllegalAccess
 構造方法私有化
反射實例化對象

 newInstance() 只能調用無參數的構造方法,相當於使用new創建的實例對象

使用關鍵字new實例化對象以及反射實例化對象有什麼區別?

若現在只是一個單純的類進行對象的實例化,非要區別
採用反射進行實例化,靈活性更高,比new 獲取 寬鬆
若現在是一個子類需要爲父接口進行對象實例化,那麼弱使用了關鍵字new,會造成接口耦合問題,因一個接口在使用中就與固定的一個子類進行了綁定。
最早的解耦和,利用工程模式,爲了一個工廠類可以使用所有接口子類的擴展需求,則可以利用反射完成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章