我有一類學生是的Java class.forClass()VS類聲明
package org.ahmed;
public class Student {
public Student() {
// TODO Auto-generated constructor stub
System.out.println("Generated constructor");
}
static { // static block
System.out.println("Hello world static");
}
{ // insance block
System.out.println("Hello world non static");
}
}
然後
public class Main {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("org.ahmed.Student"); // this line causing static block execution in Student class
// Student s; // this line doesn't execute the static block.
}
}
我用Class.forClass()
我們可以動態運行在運行任何 類明白。但在其他情況下,我有一些關於 靜態塊的問題。
如果我在我的main
方法中使用Class.forClass("org.ahmed.Student")
,那麼它的執行Student
的靜態塊爲 。但是,如果我在 main
方法中聲明Student s
它不執行靜態塊。我認爲 Class.forClass("ClassName")
是相同的聲明類與變量 名稱。
實際上,它是'Class.forName()',而不是'Class.forClass()'。 –