首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这两种说法有什么区别?

问这两种说法有什么区别?
EN

Stack Overflow用户
提问于 2012-07-17 07:00:26
回答 1查看 176关注 0票数 1

可能重复: What is difference between “Class.forName()” and “Class.forName().newInstance()”?

在我的android应用程序中,用jdbc连接mysql服务器。因为我想知道区别

代码语言:javascript
复制
`Class.forName("com.mysql.jdbc.Driver");` 

和

代码语言:javascript
复制
Class.forName("com.mysql.jdbc.Driver").newInstance(); 

以及当服务器没有连接时,如何设置超时功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-17 07:03:55

Class.forName()返回一个class对象--一个表示特定Java类的对象。

newInstance() -- java.lang.Class的一种方法--将使用表示类的非参数构造函数来创建该类的实例。

回答您的问题:(参考http://www.coderanch.com/t/385654/java/java/Difference-between-Class-forName-Class)

Class.forName()获得对类的引用,Class.forName().newInstance()尝试使用类的no-arg构造函数返回一个新实例。到目前为止还没有什么意外。Class.forName()的另一种常见用途是使类被加载,因为某些类型的类具有加载过程的副作用,而这些副作用是其他目的所必需的。JDBC是这个进程的大用户,因为在加载驱动程序类时,它需要向DriverManager类注册自己。

在Java的黑暗时期(可能是1.1.8版本,但可能是Java1.2),存在一个问题,即默认的ClassLoader在创建实例之前不会加载一个类。在这种情况下,如果使用Class.forName()而不是Class.forName().newInstance(),JDBC代码就会失败。

虽然newInstance()将创建一个被立即丢弃的实例,但它需要使Class.forName()正确工作。这项工作不再是必需的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11517461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档