java class.forname是什么,讓我們一起了解一下:
forName是裝載類用的,在java里面任何class都要裝載在虛擬機上才能運行,java.lang.Class類的forName()方法用于獲取具有指定類名的該Class的實例,此類名稱指定為字符串參數。
java中Class.forName的作用是什么?
首先在java里面任何class都要裝載在虛擬機上才能運行。
1、 forName這句話就是裝載類用的(new是根據加載到內存中的類創建一個實例,要分清楚)。?
至于什么時候用,可以考慮一下這個問題,給你一個字符串變量,它代表一個類的包名和類名,你怎么實例化它?
A a = (A)Class.forName("pacage.A").newInstance()與A a = new A()是一樣的效果。
2、jvm在裝載類時會執行類的靜態代碼段,要記住靜態代碼是和class綁定的,class裝載成功就表示執行了你的靜態代碼了,而且以后不會再執行這段靜態代碼了。
Class.forName(xxx.xx.xx)的作用是要求JVM查找并加載指定的類,也就是說JVM會執行該類的靜態代碼段。
3、動態加載和創建Class 對象,比如想根據用戶輸入的字符串來創建對象。
String?str?=?用戶輸入的字符串?? Class?t?=?Class.forName(str);?? t.newInstance();
另外,Book也是一個獨一無二的Class對象,即對象中的對象。
通過Book.java類的代碼如下:
package?com.junit.demo; public?class?Book?{ ????private?static?final?String?defName?=?"《程序猿植發》"; ????static?{ ????????System.out.println("我是靜態代碼塊,輸出:?"?+?defName); ????} ????//打印生產日期: ????public?static?String?printProduceDate(String?name)?{ ????????return?"我是靜態方法printProduceDate,輸出:?"?+?name?+?",?produce?is:"?+?System.currentTimeMillis(); ????} ????private?String?name; ????public?Book()?{ ????????System.out.println("我是Book聲明的構造方法!"); ????????name?=?defName; ????} ????public?String?toString(String?msg)?{ ????????return?name?+?msg; ????} }
以上就是小編今天的分享了,希望可以幫助到大家。