这两种说法有啥区别? [复制]

Posted

技术标签:

【中文标题】这两种说法有啥区别? [复制]【英文标题】:What is difference between these two statement? [duplicate]这两种说法有什么区别? [复制] 【发布时间】:2012-07-17 07:00:26 【问题描述】:

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

在我的 android 应用程序中使用 jdbc 连接来连接 mysql 服务器。在那我想知道区别

`Class.forName("com.mysql.jdbc.Driver");` 

Class.forName("com.mysql.jdbc.Driver").newInstance(); 

还有在服务器未连接时如何设置超时功能?

【问题讨论】:

请看这里***.com/questions/2092659/… 查看此链接***.com/questions/2092659/… 【参考方案1】:

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() 尝试使用该类的无参数构造函数来返回一个新实例。到目前为止没有任何惊喜。 Class.forName() 的另一个常见用途是加载类,因为某些类型的类在加载过程中具有其他用途所需的副作用。 JDBC 是这个进程的大用户,因为 Driver 类需要在加载时向 DriverManager 类注册。

在 Java 最黑暗的日子里,可能是 v1.1.8,但可能是 Java 1.2,默认的 ClassLoader 在创建实例之前不会加载类。在这些情况下,如果您使用 Class.forName() 而不是 Class.forName().newInstance(),则 JDBC 代码会失败。

虽然newInstance() 会创建一个立即被丢弃的实例,但需要使Class.forName() 正常工作。不再需要这种变通方法。

【讨论】:

以上是关于这两种说法有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

这两种声明数组的方式有啥区别? [复制]

C ++中这两种强制转换方法有啥区别? [复制]

这两种在 JavaScript 中定义函数的方式有啥区别? [复制]

在 Promise 中,使用 catch 和 then 的第二个参数有啥区别? [复制]

这两种符号有啥区别?

这两种方法有啥区别?