Class.forName(“類的全稱”)
①不僅表示了類的類類型,還代表了動態加載類
②請大家區分編譯,運行
③編譯時刻加載類是靜態加載類,運行時刻加載類是動態加載類
Ⅰ所有的new對象都是靜態加載類
在編譯的時刻就要去檢測該類是否存在,如果不存在,編譯失敗。
//對於這種情況,靜態加載不適用,因為我們需要根據輸入來確定加載哪個類
package com.tsh.reflect; class ReflectLoadDemo { public static void main(String[] args) { if(args[0].equals("Word")){ Word word=new Word(); } if(args[0].equals("Excel")){ Excel word=new Excel(); } } }
Ⅱ動態加載可以實現當使用的時候才去加載
package com.tsh.reflect; class ReflectLoadDemo { public static void main(String[] args) { if(args[0].equals("Word")){ try{ Class c=Class.forName("com.tsh.reflect.Word"); c.newInstance(); }catch(Exception e){ e.printStackTrace(); } } } } class Word{}
Ⅲ是代碼更具有擴展性的改動,定義interface接口規范