获取类对象引用
?轉(zhuǎn)載自: http://duben.iteye.com/blog/367218
在學(xué)習(xí)反射機(jī)制時(shí),總結(jié)一下獲得類對象方式:?
第一種方式:通過類本身來獲得對象
第二種方式:通過子類的實(shí)例獲取父類對象
Java代碼 ?
第三種方式:通過類名加.class獲取對象(類字面常量)
? 類字面常量不僅可以應(yīng)用于普通的類,還可以應(yīng)用于接口、數(shù)組、以及基本數(shù)據(jù)類型,對于基本數(shù)據(jù)類型的包裝器類,還有一個(gè)標(biāo)準(zhǔn)字段TYPE,該字段是一個(gè)引用,只想對應(yīng)的基本數(shù)據(jù)類型的Class對象。如下所示:
?
| boolean.class | Boolean.TYPE |
| char.class | Character.TYPE |
| byte.class | Byte.TYPE |
| short.class | Short.TYPE |
| int.class | Integer.TYPE |
| long.class | Long.TYPE |
| float.class | Float.TYPE |
| double.class | Double.TYPE |
| void.class | Void.TYPE |
?
與Class.forName()方法不同,.class方法在獲取對類的引用時(shí)不會引發(fā)初始化,只有在對靜態(tài)方法(構(gòu)造器隱式的是靜態(tài)的),或者非常數(shù)靜態(tài)域進(jìn)行首次引用時(shí)才會引發(fā)初始化,但是Class.forName()方法立即進(jìn)行了初始化。
如果一個(gè)final static是一個(gè)編譯期常量,則這個(gè)值不需要初始化就能訪問,但是如果不是,則需要先執(zhí)行初始化
如果一個(gè)域是static但不是final則需要鏈接和初始化。
第四種方式:通過類名的字符串獲取對象
Java代碼 ?
?? 這種方式在jdbc中常用到。
?
?
轉(zhuǎn)載于:https://blog.51cto.com/speedonward/925684
總結(jié)
- 上一篇: C语言——指针与结构体 内存的动态分配
- 下一篇: HyperLink 鼠标经过时候显示全部