java中Class对象详解
Class對(duì)象的生成方式如下:
1.Class.forName("類名字符串")? (注意:類名字符串必須是全稱,包名+類名)
2.類名.class
3.實(shí)例對(duì)象.getClass()
通過一段小程序,來觀察一下Class對(duì)象的生成的原理。
[java] view plaincopyprint??
測(cè)試的結(jié)果如下:
---靜態(tài)的參數(shù)初始化---
testForName---class TestClassType
testTypeClass---class TestClassType
----非靜態(tài)的參數(shù)初始化---
----構(gòu)造函數(shù)---
testGetClass---class TestClassType
?
根據(jù)結(jié)果可以發(fā)現(xiàn),三種生成的Class對(duì)象一樣的。并且三種生成Class對(duì)象只打印一次“靜態(tài)的參數(shù)初始化”。?
我們知道,靜態(tài)的方法屬性初始化,是在加載類的時(shí)候初始化。而非靜態(tài)方法屬性初始化,是new類實(shí)例對(duì)象的時(shí)候加載。
因此,這段程序說明,三種方式生成Class對(duì)象,其實(shí)只有一個(gè)Class對(duì)象。在生成Class對(duì)象的時(shí)候,首先判斷內(nèi)存中是否已經(jīng)加載。
所以,生成Class對(duì)象的過程其實(shí)是如此的:
當(dāng)我們編寫一個(gè)新的java類時(shí),JVM就會(huì)幫我們編譯成class對(duì)象,存放在同名的.class文件中。在運(yùn)行時(shí),當(dāng)需要生成這個(gè)類的對(duì)象,JVM就會(huì)檢查此類是否已經(jīng)裝載內(nèi)存中。若是沒有裝載,則把.class文件裝入到內(nèi)存中。若是裝載,則根據(jù)class文件生成實(shí)例對(duì)象。
總結(jié)
以上是生活随笔為你收集整理的java中Class对象详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国神级选手!Uzi直播宣布夏季赛休息:
- 下一篇: 关闭TCP连接的学问