Class.forName("")的.instance()有什么用处

bbshero 2003-08-22 04:17:29
Class.forName("")的
.instance()函数有什么用处,为什么连接odbc时就不用
而连接oracle时就必须用?
...全文
31 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
diewikwang 2003-08-22
  • 打赏
  • 举报
回复
如果确实想用getInstance()来连接jdbc,也可以用这种办法
Driver driver = (Driver)Class.forName("xx").newInstance();
driver.connect();
yll6865 2003-08-22
  • 打赏
  • 举报
回复
我觉的:
连接oracle时,用Class.fornNme是验证是否有jdbc包,如果没有就可以产生异常。
但对于odbc,就不需要验证是否有jdbc包,它采用java.sql.*中的类
bbshero 2003-08-22
  • 打赏
  • 举报
回复
up
diewikwang 2003-08-22
  • 打赏
  • 举报
回复
如果这句是用于数据库连接,一般数据库的Driver class里面都会有一段
程序,这段程序把自己在jvm里面注册一下,以便在DriverManager.getConnection
的时候在jvm能找到适当的Driver。而这段代码估计是写在static{...}里面。
至于.getInstance()是生成一个实例了,这里应该是用无参数的构造函数来
建立一个实例。
Schlemiel 2003-08-22
  • 打赏
  • 举报
回复
Class.forName(className)方法显式要求classloader加载className代表的类。使用JDBC时,driver的实际类型是以字符串的形式传给JDBC库的,JDBC库通过反射调用driver的方法。如果classloader并没有实际加载driver的类,调用就会出错。所以在使用JDBC之前通常先用forName方法强制要求classloader加载driver类。

Class.newInstance()方法创建该类的一个实例,相当于调用该类的无参数构造子。在这里没有实际的作用,顶多也就是确保classloader的确加载了driver类吧。
Wkenny 2003-08-22
  • 打赏
  • 举报
回复
不需要的
njtu 2003-08-22
  • 打赏
  • 举报
回复
同样的疑惑?

cxjd 2003-08-22
  • 打赏
  • 举报
回复
好像instance()可有可无,但一般都把他给写上的

继续关注

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧