国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

類型信息

2019-11-08 18:25:27
字體:
供稿:網(wǎng)友

類型信息

類在什么時候加載到JVM中

所有的類都是在對其第一次使用時,動態(tài)加載到JVM中。當程序創(chuàng)建第一個對類的靜態(tài)成員的引用時,就會加載這個類。這個證明構(gòu)造器也是類的靜態(tài)方法,即使在構(gòu)造器之前并沒有使用static關(guān)鍵字。因此,使用new操作符創(chuàng)建類的新對象也會被當作對類的靜態(tài)成員的引用。簡而言之,就是當對一個類的靜態(tài)成員持有引用時,這個類就會被加載到JVM。

如何通過Class對象來創(chuàng)建其他對象

Class c = Class.forName("com.leibown.Demo");/*可以通過class的對象的newInstance方法來創(chuàng)建新的實例,會得到Object引用,而這個引用指向的是Demo對象*/Object obj = c.newInstance();

注:使用newInstance()來創(chuàng)建的類,必須帶有默認的構(gòu)造器(無參構(gòu)造方法)。

使用”.class”來創(chuàng)建對Class對象的引用所包含的三個步驟

加載,這是由類加載器執(zhí)行的。這個步驟將查找字節(jié)碼(通常在classpath所指定的路徑中查找,但這并非是必需的),并從這些字節(jié)碼中創(chuàng)建一個Class對象。鏈接。在鏈接階段將驗證類中的字節(jié)碼,為靜態(tài)域分配儲存空間,并且如果必需的話,將解析這個類創(chuàng)建的對其他類的所有引用。初始化。如果該類如有超類,則對其初始化,執(zhí)行靜態(tài)初始化器和靜態(tài)初始化塊。

泛化的Class引用

Class intClass = int.class;Class<Integer> genericIntClass = int.class;

為了在使用泛化的Class引用時放松限制,加入了通配符,它是java泛型中的一部分。通配符就是”?“,表示”任何事物“。

Class<?> intClass = int.class;intClass = double.class;//普通的類引用可以被重新賦值為指向任何其他的Class對象

為了創(chuàng)建一個Class引用,它被限定為某種類型,或該類型的任何子類型,你需要將通配符與extends關(guān)鍵字相結(jié)合,創(chuàng)建一個范圍。

Class<? extends Number> bounded = int.class;bounded = double.class;bounded = Number.class;

當你將泛型語法用于Class對象時,newInstance()將返回該對象的確切類型。

Class<SmallDemo> smallDemoClass = SmallDemo.class;SmallDemo smallDemo = smallDemoClass.newInstance();Class<? super SmallDemo> demo = smallDemoClass.getSuperClass();Object obj = demo.newInstance();

類型轉(zhuǎn)換cast()

進行向下轉(zhuǎn)型前,如果沒有其他信息可以告訴你這個對象是什么類型,那么使用instanceof是非常重要的,否則會得到一個ClassCastException異常。

if(x instanceof Dog) ((Dog)x).bark();
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 荣成市| 临邑县| 樟树市| 高邮市| 肥城市| 阜新市| 哈巴河县| 昌图县| 蒲江县| 灵丘县| 徐闻县| 治县。| 金川县| 芷江| 东阿县| 抚顺市| 齐河县| 绍兴市| 岱山县| 区。| 炎陵县| 融水| 新余市| 长岭县| 微山县| 自治县| 沭阳县| 井研县| 通州区| 新干县| 佛冈县| 邵阳县| 台北县| 西安市| 中宁县| 南阳市| 长子县| 宜阳县| 客服| 公安县| 襄樊市|