社区
Java SE
帖子详情
newInstance()这个有没有 有什么影响?
kroda
2008-08-20 05:54:47
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
先问一下newInstance()是不是仅是Class的方法?
...全文
236
13
打赏
收藏
newInstance()这个有没有 有什么影响?
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 先问一下newInstance()是不是仅是Class的方法?
复制链接
扫一扫
分享
转发到动态
举报
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类得对象
火龙果被占用了
2008-08-21
打赏
举报
回复
去掉,没有丝毫用处,我不知道为什么有好多人喜欢画蛇添足地加上 .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的方法,不过你的题目没读懂,有没有 有什么影响?
主要用在反射中
Java实例化
new
和
new
Instance
反射 性能对比测试
new
Instance
比
new
最好慢7倍, 最差慢4000倍
new
在十万次到二十亿次都是5毫秒左右不再增加,
new
基本没有等比增加耗时, 可能与虚拟机优化有关
new
Instance
在一千万次前并没有等比增加耗时, 一千万次后等比增加耗时...
反射扩展:
new
Instance
与
new
之间的比较与讨论
new
Instance
: 弱类型。低效率。只能调用无参构造。
new
: 强类型。相对高效。能调用任何public构造。
new
Instance
()是实现IOC、反射、面对接口编程 和 依赖倒置 等技术方法的必然选择,
new
只能实现具体类的实例化,不适合于接口编程。 里面就是通过这个类的默认构造函数构建了一个对象,如果没有默认构造函数就抛出InstantiationException, 如果没有访问默认构造函数的权限就抛出IllegalAccessException 在初
正确使用Fragment之创建/传参——
new
Instance
方法(native)
使用频率如此之高的Fragment,你的使用姿势,真的正确吗? 如果你还在
new
Fragment(), 不妨来看看谷歌默认推荐的Fragment.
new
Instance
()吧
有人在jdk源码里下毒【class.
new
Instance
() bug复现】
不好,有人在源码里下毒
Java八股文——JVM
有关jvm的java八股文,内容详细,简单易懂
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章