Class.forName()和newInstance()的作用

来源:互联网 发布:金税通网络发票下载 编辑:程序博客网 时间:2024/06/08 13:13

原博客地址

http://blog.sina.com.cn/s/blog_8fc52b020101041v.html

1)Class.forName("");的作用是要求JVM查找并加载指定的类(java里面任何class都要装载在虚拟机上才能运行),如果在类中有静态初始化器的话,JVM必然会执行该类的静态代码段。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。构造函数是在当类被实例化的时候才会执行。Class.forName("")返回的是类
2)首先,newInstance( )是一个方法,而new是一个关键字,其次,Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用new关键字生成对象没有这个限制。 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时只需要Class.forName(XXX.XXX);就可以了。


简单来说,Class.forName("")返回的是类,Class.forName("").newInstance()返回的是object。

0 0
原创粉丝点击