电话:0731-83595998
导航

JAVA知识:Class.forName的含义

来源: 2017-12-23 14:15

 百度广告

Class aClass = Class.forName(xxx.xx.xx);Object anInstance = aClass.newInstance();Class.forName("").newInstance()返回的是objectbut there is some limit for this method to create instancethat is your class constructor should no contain parameters, and you should cast the instance manually.Class Driver{protected static Driver current;public static Driver getDriver(){return current;}}Class MyDriver extends Driver{static{Driver.current=new MyDriver();}MyDriver(){} }

 

  用时

 

Class.forName("MyDriver"); Driver d=Driver.getDriver();c

  有的jdbc连接数据库的写法里是Class.forName(xxx.xx.xx);而有一些:Class.forName(xxx.xx.xx)。newInstance(),为什么会有这两种写法呢?

  Class.forName(xxx.xx.xx) 返回的是一个类,

  。newInstance() 后才创建一个对象

  Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段

  在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBC Driver的Driver类的代码都必须类似

 

public class MyJDBCDriver implements Driver {static {DriverManager.registerDriver(new MyJDBCDriver());} }

  所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了

  在JDBC驱动中,有一块静态代码,也叫静态初始化块,它执行的时间是当class调入到内存中就执行(你可以想像成,当类调用到内存后就执行一个方法)。所以很多人把jdbc driver调入到内存中,再实例化对象是没有意义的。

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端