可能重复:
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();
以及如何在未连接服务器时设置超时功能?
答案 0 :(得分:3)
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。在这些情况下,如果您使用Class.forName()
而不是Class.forName().newInstance()
,则JDBC代码将失败。
虽然newInstance()
会创建一个立即丢弃的实例,但需要使Class.forName()
正常工作。不再需要这种解决方法。