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接口規范