鏉ヨ嚜: http://hi.baidu.com/zxf1986518/blog/item/c5fac9cebbc33b32b600c849.html
緇堜簬鏄庣櫧涓轟粈涔堝姞杞芥暟鎹簱椹卞姩鍙敤Class.forName錛堬級浜嗭紒錛佸洶鎵頒簡鎴?涓皬鏃訛紒錛佸笇鏈涙垜鍐欑殑榪欎釜涓滆タ瀵瑰悇浣嶆湁鎵甯姪銆?nbsp;
鍦↗ava寮鍙戠壒鍒槸鏁版嵁搴撳紑鍙戜腑錛岀粡甯鎬細鐢ㄥ埌Class.forName( )榪欎釜鏂規硶銆傞氳繃鏌ヨJava Documentation鎴戜滑浼氬彂鐜頒嬌鐢–lass.forName( )闈欐佹柟娉曠殑鐩殑鏄負浜嗗姩鎬佸姞杞界被銆傚湪鍔犺澆瀹屾垚鍚庯紝涓鑸繕瑕佽皟鐢–lass涓嬬殑newInstance( )闈欐佹柟娉曟潵瀹炰緥鍖栧璞′互渚挎搷浣溿傚洜姝わ紝鍗曞崟浣跨敤Class.forName( )鏄姩鎬佸姞杞界被鏄病鏈夌敤鐨勶紝鍏舵渶緇堢洰鐨勬槸涓轟簡瀹炰緥鍖栧璞°?nbsp;
榪欓噷鏈夊繀瑕佹彁涓涓嬪氨鏄疌lass涓嬬殑newInstance()鍜宯ew鏈変粈涔堝尯鍒紵錛岄鍏堬紝newInstance( )鏄竴涓柟娉曪紝鑰宯ew鏄竴涓叧閿瓧錛屽叾嬈★紝Class涓嬬殑newInstance()鐨勪嬌鐢ㄦ湁灞闄愶紝鍥犱負瀹冪敓鎴愬璞″彧鑳借皟鐢ㄦ棤鍙傜殑鏋勯犲嚱鏁幫紝鑰屼嬌鐢?new鍏抽敭瀛楃敓鎴愬璞℃病鏈夎繖涓檺鍒躲?nbsp;
濂斤紝鍒版涓烘錛屾垜浠葷粨濡備笅錛?nbsp;
Class.forName("")榪斿洖鐨勬槸綾?nbsp;
Class.forName("").newInstance()榪斿洖鐨勬槸object
鏈夋暟鎹簱寮鍙戠粡楠屾湅鍙嬩細鍙戠幇錛屼負浠涔堝湪鎴戜滑鍔犺澆鏁版嵁搴撻┍鍔ㄥ寘鐨勬椂鍊欐湁鐨勫嵈娌℃湁璋冪敤newInstance( )鏂規硶鍛紵鍗蟲湁鐨刯dbc榪炴帴鏁版嵁搴撶殑鍐欐硶閲屾槸Class.forName(xxx.xx.xx);鑰屾湁涓 浜涳細Class.forName(xxx.xx.xx).newInstance()錛屼負浠涔堜細鏈夎繖涓ょ鍐欐硶鍛紵
鍒氭墠鎻愬埌錛孋lass.forName("");鐨勪綔鐢ㄦ槸瑕佹眰JVM鏌ユ壘騫跺姞杞芥寚瀹氱殑綾伙紝濡傛灉鍦ㄧ被涓湁闈欐佸垵濮嬪寲鍣ㄧ殑璇濓紝JVM蹇呯劧浼氭墽琛岃綾葷殑闈欐佷唬鐮?孌點傝屽湪JDBC瑙勮寖涓槑紜姹傝繖涓狣river綾誨繀欏誨悜DriverManager娉ㄥ唽鑷繁錛屽嵆浠諱綍涓涓狫DBC Driver鐨?Driver綾葷殑浠g爜閮藉繀欏葷被浼煎涓嬶細
public class MyJDBCDriver implements Driver {
static {
DriverManager.registerDriver(new MyJDBCDriver());
}
}
鏃㈢劧鍦ㄩ潤鎬佸垵濮嬪寲鍣ㄧ殑涓凡緇忚繘琛屼簡娉ㄥ唽錛屾墍浠ユ垜浠湪浣跨敤JDBC鏃跺彧闇瑕丆lass.forName(XXX.XXX);灝卞彲浠ヤ簡銆?/span>
鐩稿叧 鑻辨枃鍙傝冩枃鐚涓嬶細
we just want to load the driver to jvm only, but not need to user the instance of driver, so call Class.forName(xxx.xx.xx) is enough, if you call Class.forName(xxx.xx.xx).newInstance(), the result will same as calling Class.forName(xxx.xx.xx), because Class.forName(xxx.xx.xx).newInstance() will load driver first, and then create instance, but the instacne you will never use in usual, so you need not to create it.