这两种说法有啥区别? [复制]
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()
正常工作。不再需要这种变通方法。
【讨论】:
以上是关于这两种说法有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
这两种在 JavaScript 中定义函数的方式有啥区别? [复制]