Board logo

标题: class.forname()数据库中使用 [打印本页]

作者: qingqing3721    时间: 2011-6-23 19:19     标题: class.forname()数据库中使用

在Java开发特别是数据库开发中, 经常会用到Class. forName( )这个方法。 通过查询Java Documentation我们会发现运用Class. forName( )静态方法的目的是为了动态加载类。 在加载完成后, 一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。 因此, 单单运用Class. forName( )是动态加载类是没有用的, 其最终目的是为了实例化对象。  
  这里有必要提一下就是Class下的newInstance()和new有什么区别?, 首先, newInstance( )是一个方法, 而new是一个关键字, 其次, Class下的newInstance()的运用有局限, 由于它生成对象只能调用无参的构造函数, 而运用 new关键字生成对象没有这个限制。
  好, 到此为止, 我们总结如下:
  Class. forName("")前往的是类
  Class. forName(""). newInstance()前往的是object
  无数据库开发经验朋友会发现, 为什么在我们加载数据库驱动包的时候有的却没有调用newInstance( )方法呢?即有的jdbc连接数据库的写法里是Class. forName(xxx. xx. xx);而有一些:Class. forName(xxx. xx. xx). newInstance(), 为什么会有这两种写法呢?
  刚才提到, Class. forName("");的作用是要求JVM查找并加载指定的类, 如果在类中有静态初始化器的话, JVM必定会执行该类的静态代码段。 而在JDBC标准中明白要求这个Driver类必须向DriverManager注册自己, 即任何一个JDBC Driver的Driver类的代码都必须相似如下:
  public class MyJDBCDriver implements Driver {
  static {
  DriverManager. registerDriver(new MyJDBCDriver());
  }
  }
  既然在静态初始化器的中曾经进行了注册, 所以我们在运用JDBC时只需求Class. forName(XXX.XXX);就可以了。文章由香袭人丰胸效果如何整理,收集辛苦,希望能保留出处,谢谢斑竹大哥。




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0