日期:2014-05-16  浏览次数:20407 次

JDBC中使用Class.forName("xxx")的意义

Class.forName方法介绍

在java.lang.Class中,有两个重载的forName方法,分别是:

  1. static?Class<?>forName(String?className),该方法等价于Class.forName(className, true, this.getClass().getClassLoader())
  2. static?Class<?>forName(String?className, boolean?initialize,ClassLoader?loader),其中3个参数分别表示:className - 所需类的完全限定名,initialize - 是否必须初始化类,loader - 用于加载类的类加载器。

forName方法的作用就是:
使用给定的类加载器,返回与带有给定字符串名的类或接口相关联的?Class?对象。给定一个类或接口的完全限定名,此方法会试图定位、加载和链接该类或接口。指定的类加载器用于加载该类或接口,如果参数loader?为 null,则该类通过引导类加载器加载。只有?initialize?参数为?true且以前未被初始化时,才初始化该类。

其他的都很容易懂,就是当第二个参数为true时,到底初始化的是什么呢?可以通过下面这个例子来了解:

?

[java]?view plaincopy
  1. package?wen.hui.test.forname;??
  2. ??
  3. /**?