當我們調用Class.forName(name, initialize, loader )的時候,實際上此方法內部調用了:
forName0(name, initialize, loader);
下面看一個例子,如果方法中第二個參數為false的情況:
java 代碼//example 2.1 // Zoo.java abstract class Animal { static { System.out.println("Animal static code block "); } Animal(){ System.out.println("Animal constructor"); } } class Tiger extends Animal { Tiger(){ System.out.println("Tig constructor "); } } class Dog extends Animal { Dog(){ System.out.println("Dog Constructor "); } } public class Zoo { public static void main(String [] args)throws Exception { System.out.println("new Zoo before"); Zoo z = new Zoo(); Class c = Class.forName("Dog",false,z.getClass().getClassLoader()); System.out.println("initilize before "); Animal dog = (Animal)c.newInstance(); System.out.println("new Zoo after "); } }
文章來源于領測軟件測試網 http://www.kjueaiud.com/