導航:首頁 > 編程語言 > javaclassforname參數

javaclassforname參數

發布時間:2025-10-01 23:41:49

A. java反射中通過Class.forname()如何帶參數的方法怎麼賦值和調用呀

用Class.forName方法動態載入構造方法帶參數的類。

B. java 中的class.forName()是什麼意思

Class.forName() 是指返回的是一個類。class.forName(),可以通過反射來操作這個類,例如獲取屬性,獲取方法等等。

class.forName是用到了java.lang.Class.forName包的方法,他是通過類的全稱來返回一個類,全稱是指包名稱加類名稱,他是通過jvm來載入的,這樣就可以獲取到這個類了。

Class.forName是用到了java.lang.Class.forName包的方法,全稱是指包名稱加類名稱,是通過jvm來載入的。過jvm就可以獲取到這個類,也可以通過反射來操作這個類,例如獲取屬性,獲取方法等等。這種方式在框架中比較常見。

jvm在裝載類時會執行類的靜態代碼段,要記住靜態代碼是和class綁定的,class裝載成功就表示執行了靜態代碼,而且以後不會再執行這段靜態代碼。


(2)javaclassforname參數擴展閱讀:

用法示例:

class c = Class.forName(「Example」);

factory = (ExampleInterface)c.newInstance();

其中ExampleInterface是Example的介面,可以寫成如下形式:

String className = 「Example」;

class c = Class.forName(className);

factory = (ExampleInterface)c.newInstance();

進一步可以寫成如下形式:

String className = readfromXMlConfig;//從xml 配置文件中獲得字元串

class c = Class.forName(className);

factory = (ExampleInterface)c.newInstance();

上面代碼已經不存在Example的類名稱,它的優點是,無論Example類怎麼變化,上述代碼不變,甚至可以更換Example的兄弟類Example2 , Example3 , Example4……,只要他們繼承ExampleInterface就可以。

Class.forName()用法詳解:

Class.forName(xxx.xx.xx)返回的是一個類。Class.forName(xxx.xx.xx)的作用是要求JVM查找並載入指定的類,也就是說JVM會執行該類的靜態代碼段。

當一個class被載入,或當載入器(class loader)的defineClass()被JVM調用,JVM 便自動產生一個Class 對象。

如果想藉由「修改Java標准庫源碼」來觀察Class 對象的實際生成時機(例如在Class的constructor內添加一個println()),這樣是行不通的!因為Class並沒有public constructor。

C. java下Class.forName的作用是什麼,為什麼要使用它

首先你要明白在java裡面任何class都要裝載在虛擬機上才能運行。這句話就是裝載類用的(和new不一樣,要分清楚)。
Aa=(A)Class.forName("pacage.A").newInstance();這和你Aa=newA();
是一樣的效果。
關於補充的問題
答案是肯定的,jvm會執行靜態代碼段,你要記住一個概念,靜態代碼是和class綁定的,class裝載成功就表示執行了你的靜態代碼了。而且以後不會再走這段靜態代碼了。
Class.forName(xxx.xx.xx)返回的是一個類
Class.forName(xxx.xx.xx);的作用是要求JVM查找並載入指定的類,也就是說JVM會執行該類的靜態代碼段
動態載入和創建Class對象,比如想根據用戶輸入的字元串來創建對象
Stringstr=用戶輸入的字元串
Classt=Class.forName(str);
t.newInstance();
classc=Class.forName(Example);
factory=(ExampleInterface)c.newInstance();
其中ExampleInterface是Example的介面,可以寫成如下形式:
StringclassName="Example";
classc=Class.forName(className);
factory=(ExampleInterface)c.newInstance();
進一步可以寫成如下形式:
StringclassName=readfromXMlConfig;//從xml配置文件中獲得字元串
classc=Class.forName(className);
factory=(ExampleInterface)c.newInstance();
從JVM的角度看,我們使用關鍵字new創建一個類的時候,這個類可以沒有被載入。但是使用newInstance()方法的時候,就必須保證:1、這個類已經載入;2、這個類已經連接了。而完成上面兩個步驟的正是Class的靜態方法forName()所完成的,這個靜態方法調用了啟動類載入器,即載入javaAPI的那個載入器。
現在可以看出,newInstance()實際上是把new這個方式分解為兩步,即首先調用Class載入方法載入某個類,然後實例化。這樣分步的好處是顯而易見的。我們可以在調用class的靜態載入方法forName時獲得更好的靈活性,提供給了一種降耦的手段。
最後用最簡單的描述來區分new關鍵字和newInstance()方法的區別:
newInstance:弱類型。低效率。只能調用無參構造。
new:強類型。相對高效。

D. JAVA反射中通過Class.forname()如何帶參數的方法怎麼賦值和調用呀

要調用帶參數的方法方法舉個例子:package com;
import java.lang.reflect.Method;
public class InvokeMethod {
public static void main(String args[]){
try
{
//動態載入Student類
Class student = Class.forName("com.Student");
//獲取Student類名稱為printInfo的方法
Method method1 = student.getMethod("printInfo");
//調用printInfo方法
method1.invoke(student.newInstance());
//獲取Student類名稱為printInfo的方法,String.class是方法的參數類型
Method method2 = student.getMethod("printAddress",String.class);
//調用printAddress方法,其中HK是為方法傳遞一個參數值
method2.invoke(student.newInstance(),"hello關知紅");
}catch(Exception e)
{
e.printStackTrace();
}
}
}

閱讀全文

與javaclassforname參數相關的資料

熱點內容
烏班圖哪個版本編程好 瀏覽:400
文件存在微信的哪裡面永不丟失 瀏覽:262
怎麼編程一個圖形 瀏覽:948
採集助手資料庫下載 瀏覽:132
cad文件保存找不到圖形文件 瀏覽:232
xps文件軟化為excel 瀏覽:544
最全小說app哪個好 瀏覽:364
機器學習編程怎麼樣 瀏覽:20
ue設置文件顯示文件名 瀏覽:831
什麼網站可以免費看圖紙 瀏覽:458
api工具 瀏覽:104
word在中間插入目錄 瀏覽:52
javaclassforname參數 瀏覽:698
文件一鍵解壓後去哪裡了 瀏覽:454
12864液晶c程序 瀏覽:392
word如何鎖定頁眉 瀏覽:289
photoview360教程 瀏覽:242
錄的視頻在哪個文件夾里 瀏覽:695
編程貓怎麼設置路由器密碼 瀏覽:228
mac上怎麼升級itunes 瀏覽:649

友情鏈接