class轉(zhuǎn)java是什么,讓我們一起了解下?
在Java中,每個(gè)class都有一個(gè)相應(yīng)的Class對象。也就是說,當(dāng)我們編寫一個(gè)類,編譯完成后,在生成的.class文件中,就會(huì)產(chǎn)生一個(gè)Class對象,用于表示這個(gè)類的類型信息。
獲取Class實(shí)例的三種方式:
(1)利用對象調(diào)用getClass()方法獲取該對象的Class實(shí)例;
(2)使用Class類的靜態(tài)方法forName(),用類的名字獲取一個(gè)Class實(shí)例(staticClass forName(StringclassName)? Returns the Classobject associated with the class or interface with the given stringname. );
(3)運(yùn)用.class的方式來獲取Class實(shí)例,對于基本數(shù)據(jù)類型的封裝類,還可以采用.TYPE來獲取相對應(yīng)的基本數(shù)據(jù)類型的Class實(shí)例在newInstance()調(diào)用類中缺省的構(gòu)造方法ObjectnewInstance()(可在不知該類的名字的時(shí)候,常見這個(gè)類的實(shí)例) Creates a new instance of the class represented by this Classobject.
在運(yùn)行期間,如果我們要產(chǎn)生某個(gè)類的對象,Java虛擬機(jī)(JVM)會(huì)檢查該類型的Class對象是否已被加載。如果沒有被加載,JVM會(huì)根據(jù)類的名稱找到.class文件并加載它。一旦某個(gè)類型的Class對象已被加載到內(nèi)存,就可以用它來產(chǎn)生該類型的所有對象。
實(shí)際案例代碼如下:
1?public?class?ClassTest?{undefined 2?public?static?void?main(String?[]?args)throws?Exception{undefined 3?String?str1="abc"; 4?Class?cls1=str1.getClass(); 5?Class?cls2=String.class; 6?Class?cls3=Class.forName("java.lang.String"); 7?System.out.println(cls1==cls2); 8?System.out.println(cls1==cls3); 9?} 10?}
返回結(jié)果為:true,true.
解釋:虛擬機(jī)只會(huì)產(chǎn)生一份字節(jié)碼,?用這份字節(jié)碼可以產(chǎn)生多個(gè)實(shí)例對象。
以上就是小編今天的分享了,希望可以幫助到大家。