1、使用forName()方法時(shí),即使引用同一個(gè)包中的類(lèi),也要寫(xiě)完整的包名,如:
try {
Printable p1 = (Printable) Class.forName(
"com.coderdream.chapter21.proxy.a1.Printer").newInstance();
} catch (Exception e) {
System.out.println("Nooo");
}
Printable p1 = (Printable) Class.forName(
"com.coderdream.chapter21.proxy.a1.Printer").newInstance();
} catch (Exception e) {
System.out.println("Nooo");
}
接口Printable和類(lèi)Printer在同一個(gè)包中,但也要寫(xiě)完整的包名,否則拋出異常,提示找不到Printer類(lèi)。
2、使用newInstance()方法時(shí),如果不存在無(wú)參的構(gòu)造函數(shù),也會(huì)報(bào)找不到Printer類(lèi)。
這一點(diǎn)很容易忽略,而且很難找到錯(cuò)誤,我們經(jīng)常會(huì)寫(xiě)一些帶參數(shù)的構(gòu)造函數(shù)。而此處的newInstance()方法是會(huì)調(diào)用默認(rèn)構(gòu)造函數(shù),如果不存在會(huì)拋出找不到類(lèi)的異常。