Java 中的 Class.forName() 和 Class.forName().newInstance()
本文將解釋 Java 中的 Class.forName()
和 Class.forName().newInstance()
之間的區別。
Java 中的 Class.forName()
Class.forName()
返回所提供名稱的類的型別。它將返回對類的引用並載入所有可訪問的靜態塊,而不是例項方法。
java.lang.Class
類的 forName()
函式用於檢索具有提供的類名的此類的例項。類名作為 string
引數提供。
如果找不到該類,則丟擲 ClassNotFoundException
。
語法:
public static Class<S> forName(String suppliedclass) throws ClassNotFoundException
例子:
forName()
技術在下面的應用程式中進行了演示。
- 在
Main
類中建立一個Class
型別變數,名為exampleclass
,並將Class.ForName
的引數設定為 ("java.lang.String"
)。 - 使用下面的程式碼行,你可能會看到
Class
的名稱。
System.out.print(" The Example Class represents a class named : " + exampleclass.toString());
原始碼:
public class ForNameExample {
public static void main(String[] args) throws ClassNotFoundException {
Class exampleclass = Class.forName("java.lang.String");
System.out.print("The Example Class represents a class named : " + exampleclass.toString());
}
}
輸出:
The Example Class represents a class named : class java.lang.String
Java 中的 Class.forName().newInstance()
newInstance()
返回類的例項。然後這將返回該類的一個物件,我們可以使用它來呼叫例項方法。
java.lang
包中的 Class
類的 forName()
方法返回引數的 Class
物件,然後由類載入器載入。類的 newInstance()
函式然後返回一個新例項。
每當你希望載入類、執行其靜態塊並訪問其非靜態部分時,你都需要一個例項,這將需要以下內容。
語法:
Class.forName("class").newInstance();
例子:
建立一個名為 MultiplyExample
的類並初始化兩個 integer
型別變數,名為 z
和 x
。此類通過將兩個提供的數字相乘來返回一個例項。
class MultiplyExample {
int Multiply(int z, int x) {
return (z * x);
}
}
現在建立一個名為 m
的 MultiplyExample
物件,然後應用 Class.forName().newInstance()
。
MultiplyExample m = (MultiplyExample) Class.forName("MultiplyExample").newInstance();
最後,使用傳遞給 Multiply
函式的物件顯示結果。
System.out.println("After Multiply result is " + m.Multiply(7, 5));
在這種情況下,Class.forName("MultiplyExample")
生成 MultiplyExample.class
,newInstance()
生成 Multiply
類例項。簡而言之,它與執行 new MultiplyExample()
相同。
原始碼:
class MultiplyExample {
int Multiply(int z, int x) {
return (z * x);
}
}
class Main
{
public static void main(String args[]) throws Exception
{
MultiplyExample m = (MultiplyExample)Class.forName("MultiplyExample").newInstance();
System.out.println("After Multiply result is "+ m.Multiply(7, 5));
}
}
輸出:
After Multiply result is 35
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn