Ich habe eine Klasse Schüler, diejava class.forClass() vs Klasse Erklärung
istpackage 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");
}
}
und dann
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.
}
}
Ich verstehe Class.forClass()
unter Verwendung wir können dynamisch jede Klasse zur Laufzeit ausgeführt werden. Aber ich habe einige Fragen in Bezug auf statischen Block.
Wenn ich Class.forClass("org.ahmed.Student")
in meiner main
Methode verwenden, dann ist es den statischen Block von Student
ausführt. Aber wenn ich Student s
in main
Methode deklariere es führt nicht den statischen Block. Ich dachte Class.forClass("ClassName")
ist das gleiche wie deklarieren Klasse mit einer Variablen Namen.
Eigentlich ist es "Class.forName()", nicht "Class.forClass()". –