
java class.forname是什么,讓我們一起了解一下:
forName是裝載類用的,在java里面任何class都要裝載在虛擬機(jī)上才能運(yùn)行,java.lang.Class類的forName()方法用于獲取具有指定類名的該Class的實(shí)例,此類名稱指定為字符串參數(shù)。
java中Class.forName的作用是什么?
首先在java里面任何class都要裝載在虛擬機(jī)上才能運(yùn)行。
1、 forName這句話就是裝載類用的(new是根據(jù)加載到內(nèi)存中的類創(chuàng)建一個(gè)實(shí)例,要分清楚)。?
至于什么時(shí)候用,可以考慮一下這個(gè)問題,給你一個(gè)字符串變量,它代表一個(gè)類的包名和類名,你怎么實(shí)例化它?
A a = (A)Class.forName("pacage.A").newInstance()與A a = new A()是一樣的效果。

2、jvm在裝載類時(shí)會(huì)執(zhí)行類的靜態(tài)代碼段,要記住靜態(tài)代碼是和class綁定的,class裝載成功就表示執(zhí)行了你的靜態(tài)代碼了,而且以后不會(huì)再執(zhí)行這段靜態(tài)代碼了。
Class.forName(xxx.xx.xx)的作用是要求JVM查找并加載指定的類,也就是說JVM會(huì)執(zhí)行該類的靜態(tài)代碼段。
3、動(dòng)態(tài)加載和創(chuàng)建Class 對(duì)象,比如想根據(jù)用戶輸入的字符串來創(chuàng)建對(duì)象。
String?str?=?用戶輸入的字符串?? Class?t?=?Class.forName(str);?? t.newInstance();
另外,Book也是一個(gè)獨(dú)一無二的Class對(duì)象,即對(duì)象中的對(duì)象。
通過Book.java類的代碼如下:
package?com.junit.demo;
public?class?Book?{
????private?static?final?String?defName?=?"《程序猿植發(fā)》";
????static?{
????????System.out.println("我是靜態(tài)代碼塊,輸出:?"?+?defName);
????}
????//打印生產(chǎn)日期:
????public?static?String?printProduceDate(String?name)?{
????????return?"我是靜態(tài)方法printProduceDate,輸出:?"?+?name?+?",?produce?is:"?+?System.currentTimeMillis();
????}
????private?String?name;
????public?Book()?{
????????System.out.println("我是Book聲明的構(gòu)造方法!");
????????name?=?defName;
????}
????public?String?toString(String?msg)?{
????????return?name?+?msg;
????}
}以上就是小編今天的分享了,希望可以幫助到大家。
