這個課程講的Class類實例對象的方法時,第一種就是Class<?>cs=Foo.class,其實這個.class是一個靜態(tài)變量嗎?因為他可以直接用類名調(diào)取?還有對于一些采用單例設(shè)計模式,我們怎樣運用反射取得某個類實例對象呢?
1 回答
已采納

HansonQ
TA貢獻(xiàn)223條經(jīng)驗 獲得超56個贊
public?class?A{ ????private?static?A?a?=?new?A(); ????private?A(){};//私有化構(gòu)造函數(shù) ????public?A?getSingleton(){ ????????return?a; ????} } //上面這個就是簡單的單例 我們知道反射可以反射出一個類的任意構(gòu)造方法。 對應(yīng)公共的構(gòu)造方法我們可以直接利用但是對于私有的構(gòu)造函數(shù),我們需要取消代碼校驗(也就是暴力訪問) Class<A>?a??=?A.class;//靜態(tài)變量(沒深入想過,一般是不會使用這個這個方法) Class<A>?clazz?=?Class.forName("A類的權(quán)限路徑");//這種用的比較多 Constructor?cons?=?clazz.getDeclaredConstructor();//獲得私有的構(gòu)造函數(shù) cons.setAccessible(true);//暴力訪問 Object?object?=?cons.newInstance();//實例化對象
添加回答
舉報
0/150
提交
取消