newInstance()这个有没有 有什么影响?

kroda 2008-08-20 05:54:47
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
先问一下newInstance()是不是仅是Class的方法?
...全文
236 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
milooxu 2008-08-21
  • 打赏
  • 举报
回复
就是相当于new 了一个无参构造器,当然前提是反射的这个类要有无参构造器,其他的诸如:Method,Constructor里也有newInstance方法,需要可变长的参数的
Java_Chaos 2008-08-21
  • 打赏
  • 举报
回复
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") 是加载com.microsoft.sqlserver.jdbc.SQLServerDriver这个类。。
newInstance()则创建com.microsoft.sqlserver.jdbc.SQLServerDriver类得对象
  • 打赏
  • 举报
回复
去掉,没有丝毫用处,我不知道为什么有好多人喜欢画蛇添足地加上 .newInstance()

JDBC 使用 Class.forName("xxx.xxx.Driver"); 来注册驱动程序,根本没有要求将其进行实例化。

就算要求实例化,这样写也是不对的,这样只产生了一个匿名对象,而这个对象没有被引用,也就是
说这样做是无用功,吃力不讨好的行为。
kroda 2008-08-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 milooxu 的回复:]
就是相当于new 了一个无参构造器,当然前提是反射的这个类要有无参构造器,其他的诸如:Method,Constructor里也有newInstance方法,需要可变长的参数的
[/Quote]
请问newInstance跟反射有什么关系..不太明白
MajorZQ 2008-08-21
  • 打赏
  • 举报
回复
Class.forName(String className) ---- 根据className来生成一个类型为Class的对象.

Class这个类中有一个newInstance()方法,这个方法会调用该对象所代表类(在你的例子中就是com.microsoft.sqlserver.jdbc.SQLServerDriver)的缺省构造方法,并返回一个对象。这种新建对象的方法就叫反射了。

这种方法的效果和:

new com.microsoft.sqlserver.jdbc.SQLServerDriver();

是一样的。
沉沦 2008-08-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bao110908 的回复:]
去掉,没有丝毫用处,我不知道为什么有好多人喜欢画蛇添足地加上 .newInstance()

JDBC 使用 Class.forName("xxx.xxx.Driver"); 来注册驱动程序,根本没有要求将其进行实例化。

就算要求实例化,这样写也是不对的,这样只产生了一个匿名对象,而这个对象没有被引用,也就是
说这样做是无用功,吃力不讨好的行为。
[/Quote]
milooxu 2008-08-21
  • 打赏
  • 举报
回复
一般在数据库驱动实现是会加一个static的代码块,然后你反射这个类的时候,会帮你在静态代码块里完成注册驱动这些事情的。
panhf2003 2008-08-20
  • 打赏
  • 举报
回复
我想这里的newInstance()是不需要的,因为这里的forName的作用是加载这个jdbc驱动,只要Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") 就能加载成功jdbc驱动了,后面就可以连接db了
kroda 2008-08-20
  • 打赏
  • 举报
回复
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
那我直接写成这样 也不影响连接数据库啊。。连接也正常的
加了一个newInstance()作用是什么?就这点不明白
kroda 2008-08-20
  • 打赏
  • 举报
回复
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
那我直接写成这样 也不影响连接数据库啊。。连接也正常的
加了一个newInstance()作用是什么?就这点不明白
liujiaqwer 2008-08-20
  • 打赏
  • 举报
回复
不是单例的意思。。这是两回事。。
简单地说就是创建一个新实例。。
这有什么不明白吗?
kroda 2008-08-20
  • 打赏
  • 举报
回复
API里是这么说的:创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的 new 表达式实例化该类。如果该类尚未初始化,则初始化这个类。

太官方 看不明白啊

换句话怎么理解?
是只创建一个实例吗?就是单例?
API解释的 。。哎
laorer 2008-08-20
  • 打赏
  • 举报
回复
....为什么不去查查api呢,
它是Class的方法,不过你的题目没读懂,有没有 有什么影响?
主要用在反射中

62,634

社区成员

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

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